![Page 1: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/1.jpg)
Computer Graphics:2D Transformations
Kocaeli UniversitesityComputer Engineering Department
Fall 2011
1
![Page 2: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/2.jpg)
Geometric Transformation
• What is geometric transformation?• Operations that are applied to the geometric
description of an object to change its position, orientation, or size are called geometric transformations
2
![Page 3: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/3.jpg)
3
2D Transformations
x
yx
y
x
y
![Page 4: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/4.jpg)
4
2D Transformations
x
yx
y
x
y
Applications:- Animation
- Image/object manipulation
- Viewing transformation
- etc.
![Page 5: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/5.jpg)
5
2D Transformation
• Given a 2D object, transformation is to change the object’s – Position (translation)– Size (scaling)– Orientation (rotation)– Shapes (shear)
• Apply a sequence of matrix multiplications to the object vertices
![Page 6: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/6.jpg)
6
Point Representation
• We can use a column vector (a 2x1 matrix) to represent a 2D point x
y• A general form of linear transformation can be
written as: x’ = ax + by + c
OR
y’ = dx + ey + f
X’ a b c xY’ = d e f * y1 0 0 1 1
![Page 7: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/7.jpg)
7
Translation• Re-position a point along a straight line • Given a point (x,y), and the translation distance
(tx,ty)
The new point: (x’, y’) x’ = x + tx y’ = y + ty (x,y)
(x’,y’)
OR P’ = P + T where P’ = x’ p = x T = tx y’ y ty
tx
ty
![Page 8: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/8.jpg)
8
Translation
• How to translate an object with multiple vertices?
Translate individualvertices
![Page 9: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/9.jpg)
9
2D Rotation
• Default rotation center: Origin (0,0)
Rotate counter clockwise
Rotate clockwise
![Page 10: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/10.jpg)
10
(x,y)
(x’,y’)
(x,y) -> Rotate about the origin by
(x’, y’)
How to compute (x’, y’) ?
r
2D Rotation
![Page 11: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/11.jpg)
11
(x,y)
(x’,y’)
(x,y) -> Rotate about the origin by
(x’, y’)
How to compute (x’, y’) ?
x = r cos () y = r sin ()
r
x’ = r cos () y’ = r sin ()
2D Rotation
![Page 12: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/12.jpg)
12
2D Rotation
(x,y)
(x’,y’)
r
x = r cos () y = r sin ()
x’ = r cos () y = r sin ()
x’ = r cos ()
= r cos() cos() – r sin() sin()
= x cos() – y sin()
y’ = r sin ()
= r sin() cos() + r cos()sin()
= y cos() + x sin()
![Page 13: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/13.jpg)
13
2D Rotation
(x,y)
(x’,y’)
r
x’ = x cos() – y sin()
y’ = y cos() + x sin()
Matrix form?
x’ cos() -sin() x y’ sin() cos() y
=
![Page 14: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/14.jpg)
14
How to rotate an object with multiple vertices?
Rotate individualVertices
2D Rotation
![Page 15: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/15.jpg)
15
2D Scaling
Scale: Alter the size of an object by a scaling factor (Sx, Sy), i.e.
x’ = x . Sx y’ = y . Sy
x’ Sx 0 xy’ 0 Sy y=
(1,1)
(2,2) Sx = 2, Sy = 2
(2,2)
(4,4)
![Page 16: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/16.jpg)
16
2D Scaling
(1,1)
(2,2) Sx = 2, Sy = 2
(2,2)
(4,4)
Not only the object size is changed, it also moved!! Usually this is an undesirable effect We will discuss later (soon) how to fix it
![Page 17: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/17.jpg)
Scaling facts
17
![Page 18: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/18.jpg)
18
Put it all together
• Translation:
• Rotation:
• Scaling:
y
x
t
t
y
x
y
x
y
x
t
t
y
x
cossin
sincos
y
x
y
x
t
t
s
s
y
x
0
0
![Page 19: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/19.jpg)
Homogeneous Coordinates -1
• It is well known that many application involves sequences of geometric transformations
• For example, an animation might require an object to be translated, rotated and scaled at each increment of the motion
• If you want to first rotates an object, then scales it, you can combine those two transformation to a composite transformation like the following equation
19
0 cos sincos sin*
0 sin cossin cosx x x
y y y
S S SA S R
S S S
![Page 20: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/20.jpg)
Homogeneous Coordinates -2
• However, it will be difficult to deal with the above composite transformation and translation together. Because, translation is not 2 by 2 matrix representation
• Consider how the matrix representations discussed in the previous sections can be reformulated so that such transformation sequences can be efficiently processed
20
![Page 21: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/21.jpg)
Homogeneous Coordinates -3
• A standard technique for expanding each two-dimensional coordinate position representation (x, y) to three-element representation, called Homogeneous Coordinates, where homogeneous h is a nonzero value such that
21
,h hx yx y
h h
• A convenient choice is simply to set h=1, so each two-dimensional position is then represented with homogeneous coordinate (x,y,1).
![Page 22: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/22.jpg)
22
Or, 3x3 Matrix Representations
• Translation:
• Rotation:
• Scaling:
x’ 1 0 tx x y’ = 0 1 ty * y1 0 0 1 1
x’ cos() -sin() 0 x y’ sin() cos() 0 * y1 0 0 1 1
=
x’ Sx 0 0 x y’ = 0 Sy 0 * y1 0 0 1 1
Why use 3x3 matrices?
![Page 23: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/23.jpg)
23
Why Use 3x3 Matrices?
• So that we can perform all transformations using matrix/vector multiplications
• This allows us to pre-multiply all the matrices together
• The point (x,y) needs to be represented as (x,y,1) -> this is called Homogeneous coordinates!• How to represent a vector (vx,vy)?
![Page 24: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/24.jpg)
24
Composing Transformation
• Composing Transformation – the process of applying several transformation in succession to form one overall transformation
• If we apply transforming a point P using M1 matrix first, and then transforming using M2, and then M3, then we have:
(M3 x (M2 x (M1 x P )))
![Page 25: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/25.jpg)
25
Composing Transformation
• Composing Transformation – the process of applying several transformation in succession to form one overall transformation
• If we apply transforming a point P using M1 matrix first, and then transforming using M2, and then M3, then we have:
(M3 x (M2 x (M1 x P ))) = M3 x M2 x M1 x P
M
(pre-multiply)
![Page 26: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/26.jpg)
26
Composing Transformation
• Matrix multiplication is associative M3 x M2 x M1 = (M3 x M2) x M1 = M3 x (M2 x M1)
• Transformation products may not be commutative A x B != B x A • Some cases where A x B = B x A A B translation translation scaling scaling rotation rotation uniform scaling rotation
(sx = sy) translation rotation?
![Page 27: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/27.jpg)
Example1: General Two-Dimensional Pivot-Point Rotation
• So we can generate a 2D rotation about any other pivot point (x, y) by performing the following sequence of translate-rotate-translate operations
27
(xr,yr
)(xr,yr
)(xr,yr
)(xr,yr)
![Page 28: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/28.jpg)
Example1 (Cont)1. Translate the object so that the pivot-point position
is moved to the coordinate origin2. Rotate the object about the coordinate origin3. Translate the object so that the pivot point is
returned to its original position
28
1 0 1 0 cos sin (1 cos ) sincos sin 0
0 1 sin cos 0 0 1 sin cos (1 cos ) sin
0 0 10 0 1 0 0 1 0 0 1
r r r r
r r r r
x x x y
y y y x
( , ) ( ) ( , ) ( , , )r r r r r rT x y R T x y R x y
![Page 29: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/29.jpg)
Example2: Scaling without translation
1. Translate the object to so that the fixed point coincides with the coordinate origin
2. Scale the object with respect to the coordinate origin
3. Use the inverse of the translation in step (1) to return the object to its original position
29
![Page 30: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/30.jpg)
Example2 (Cont)
30
(xr,yr
)(xr,yr
)(xr,yr) (xr,yr)
Translate Scale Translate
100
)1(0
)1(0
100
10
01
100
00
00
100
10
01
yfy
xfx
f
fx
f
f
sys
sxs
y
x
s
s
y
x
y
yxffffyxff ssyxSyxTssSyxT ,,,, ,,
![Page 31: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/31.jpg)
Some Other Transformations
Shearing and Reflections
31
![Page 32: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/32.jpg)
32
Shearing
• Y coordinates are unaffected, but x coordinates are translated linearly with y
• That is:– y’ = y – x’ = x + y * h
x 1 h 0 xy = 0 1 0 * y1 0 0 1 1
![Page 33: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/33.jpg)
33
x 1 0 0 xy = g 1 0 * y1 0 0 1 1
Shearing will not change the area of the object
Interesting Facts:
Shearing in Y
![Page 34: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/34.jpg)
34
Reflection
![Page 35: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/35.jpg)
35
Reflection
![Page 36: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/36.jpg)
36
Reflection
![Page 37: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/37.jpg)
37
Reflection about X-axis
![Page 38: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/38.jpg)
38
Reflection about X-axis
x 1 0 0 xy = 0 -1 0 * y1 0 0 1 1
![Page 39: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/39.jpg)
39
Reflection about Y-axis
![Page 40: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/40.jpg)
40
Reflection about Y-axis
x -1 0 0 xy = 0 1 0 * y1 0 0 1 1
![Page 41: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/41.jpg)
41
What’s the Transformation Matrix?
![Page 42: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/42.jpg)
42
What’s the Transformation Matrix?
x -1 0 0 xy = 0 -1 0 * y1 0 0 1 1
![Page 43: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/43.jpg)
More about reflection?
• Reflection about y=x• Reflection about y=-x
43
![Page 44: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/44.jpg)
44
The standard rotation matrix is used to rotate about the origin (0,0)
cos() -sin() 0 sin() cos() 0 0 0 1
What if I want to rotate about an arbitrary center?
Rotation Revisit
![Page 45: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/45.jpg)
45
Arbitrary Rotation Center
• To rotate about an arbitrary point P (px,py) by :
(px,py)
![Page 46: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/46.jpg)
46
Arbitrary Rotation Center
• To rotate about an arbitrary point P (px,py) by : – Translate the object so that P will coincide with the
origin: T(-px, -py)
(px,py)
![Page 47: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/47.jpg)
47
Arbitrary Rotation Center
• To rotate about an arbitrary point P (px,py) by : – Translate the object so that P will coincide with the
origin: T(-px, -py) – Rotate the object: R()
(px,py)
![Page 48: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/48.jpg)
48
Arbitrary Rotation Center
• To rotate about an arbitrary point P (px,py) by : – Translate the object so that P will coincide with the
origin: T(-px, -py) – Rotate the object: R()– Translate the object back: T(px,py)
(px,py)
![Page 49: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/49.jpg)
49
Translate the object so that P will coincide with the origin: T(-px, -py)
Rotate the object: R() Translate the object back: T(px,py)
Put in matrix form: T(px,py) R() T(-px, -py) * P
x’ 1 0 px cos() -sin() 0 1 0 -px x y’ = 0 1 py sin() cos() 0 0 1 -py y1 0 0 1 0 0 1 0 0 1 1
Arbitrary Rotation Center
![Page 50: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/50.jpg)
50
The standard scaling matrix will only anchor at (0,0)
Sx 0 0 0 Sy 0 0 0 1
What if I want to scale about an arbitrary pivot point?
Scaling Revisit
![Page 51: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/51.jpg)
51
To scale about an arbitrary fixed point P (px,py):
(px,py)
Arbitrary Scaling Pivot
![Page 52: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/52.jpg)
52
To scale about an arbitrary fixed point P (px,py): Translate the object so that P will coincide
with the origin: T(-px, -py)
(px,py)
Arbitrary Scaling Pivot
![Page 53: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/53.jpg)
53
To scale about an arbitrary fixed point P (px,py): Translate the object so that P will coincide
with the origin: T(-px, -py) Scale the object: S(sx, sy)
(px,py)
Arbitrary Scaling Pivot
![Page 54: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1](https://reader033.vdocuments.mx/reader033/viewer/2022061304/5513bca155034653298b4791/html5/thumbnails/54.jpg)
54
To scale about an arbitrary fixed point P (px,py): Translate the object so that P will coincide
with the origin: T(-px, -py) Scale the object: S(sx, sy) Translate the object back: T(px,py)
(px,py)
Arbitrary Scaling Pivot