CAP4730: Computational Structures in Computer Graphics 2D Transformations
Jan 15, 2016
CAP4730: Computational Structures in Computer Graphics
2D Transformations
2D Transformations
• World Coordinates
• Translate
• Rotate
• Scale
• Viewport Transforms
• Putting it all together
Transformations
• Rigid Body Transformations - transformations that do not change the object.
• Translate
– If you translate a rectangle, it is still a rectangle
• Scale
– If you scale a rectangle, it is still a rectangle
• Rotate
– If you rotate a rectangle, it is still a rectangle
Vertices
• We have always represented vertices as (x,y)
• An alternate method is:
• Example:
y
xyx ),(
8.4
1.2)8.4,1.2(
Matrix * Vector
10
01
'
'
'
'
I
dycxy
byaxx
y
x
dc
ba
y
x
100
010
001
'
'
'
'
'
'
I
izhygxz
fzeydxy
czbyaxx
z
y
x
ihg
fed
cba
z
y
x
Matrix * Matrix
10
01?
*
,
dc
ba
dwcydzcx
bwaybzaxBA
wz
yxB
dc
baA
Does A*B = B*A?
What does the identity do?
Practice
?*
?*
5.23
15.0,
51
32
?
3
2,
51
32
IA
BA
BA
AX
XA
Translation
• Translation - repositioning an object along a straight-line path (the translation distances) from one coordinate location to another.
(x,y)
(x’,y’)
(tx,ty)
Translation
• Given:
• We want:
• Matrix form:TPP
t
t
y
x
y
x
tyy
txx
ttT
yxP
y
x
y
x
yx
'
'
'
'
'
),(
),(
1.4'
4.3'
2.8
1.7
1.4
7.3
'
'
2.81.4'
1.77.3'
)2.8,1.7(
)1.4,7.3(
y
x
y
x
y
x
T
P
Translation Examples
• P=(2,4), T=(-1,14), P’=(?,?)
• P=(8.6,-1), T=(0.4,-0.2), P’=(?,?)
• P=(0,0), T=(1,0), P’=(?,?)
Which one is it?
(x,y)
(x’,y’)
(tx,ty)
(x,y)
(tx,ty)
Recall
• A point is a position specified with coordinate values in some reference frame.
• We usually label a point in this reference point as the origin.
• All points in the reference frame are given with respect to the origin.
Applying to Triangles
(tx,ty)
What do we have here?
• You know how to:
Scale
• Scale - Alters the size of an object.
• Scales about a fixed point
(x,y)
(x’,y’)
Scale
• Given:
• We want:
• Matrix form:PSP
y
x
s
s
y
x
ysy
xsx
ssS
yxP
y
x
y
x
yx
'
0
0
'
'
'
'
),(
),(
6.6'
2.4'
2.2
4.1
30
03
'
'
2.2*3'
4.1*3'
)3,3(
)2.2,4.1(
y
x
y
x
y
x
S
P
Non-Uniform/Differential Scalin’
(x,y)
(x’,y’)
S=(1,2)
Rotation
• Rotation - repositions an object along a circular path.
• Rotation requires an and a pivot point
Rotation
)cos('
)cos('
sin
cos
)(
),(
ry
rx
ry
rx
R
yxP
PRP
y
x
y
x
yxy
yxx
rry
rrx
'
cossin
sincos
'
'
cossin'
sincos'
cossinsincos'
sinsincoscos'
Example
• P=(4,4)=45 degrees
What is the difference? RevisitedV(-0.6,0) V(0,-0.6) V(0.6,0.6)
Translate (1.2,0.3)
V(0,0.6) V(0.3,0.9) V(0,1.2)
Translate (1.2,0.3)
V(0.6,0.3) V(1.2,-0.3) V(1.8,0.9)
V(0,0.6) V(0.3,0.9) V(0,1.2)
RotationsV(-0.6,0) V(0,-0.6) V(0.6,0.6)Rotate -30 degrees
V(0,0.6) V(0.3,0.9) V(0,1.2)
Combining Transformations
Q: How do we specify each transformation?
Specifying 2D Transformations
• Translation– T(tx, ty)
– Translation distances
• Scale– S(sx,sy)
– Scale factors
• Rotation– R()– Rotation angle
Combining Transformations
• Using translate, rotation, and scale, how do we get:
Combining Transformations• Note there are two ways to combine
rotation and translation. Why?
Let’s look at the equations
cos'sin'"
sin'cos'"
'
'
'''
'
)(
),(
),(
yxy
yxx
tyy
txx
PRP
TPP
R
ttT
yxP
y
x
yx
y
x
yx
yx
tyxy
tyxx
yxy
yxx
TPP
PRP
tytxy
tytxx
cossin"
sincos"
cossin'
sincos'
'"
'
cos'sin"
sin'cos"
Combining them
• We must do each step in turn. First we rotate the points, then we translate, etc.
• Since we can represent the transformations by matrices, why don’t we just combine them?
PSP
PRP
TPP
'
'
'
2x2 -> 3x3 Matrices
• We can combine transformations by expanding from 2x2 to 3x3 matrices.
100
0cossin
0sincos
cossin
sincos
100
00
00
0
0,
100
10
01
,
R
s
s
s
sssS
t
t
t
t
y
xttT
y
x
y
x
yx
y
x
y
x
yx
Homogenous Coordinates
• We need to do something to the vertices
• By increasing the dimensionality of the problem we can transform the addition component of Translation into multiplication.
2
22
147
2
63
2
14
6
7
3.,
1
2
4
2
4. ExEx
h
hh
yy
h
xx
h
y
x
y
xP h
h
h
h
Homogenous Coordinates
• Homogenous Coordinates - term used in mathematics to refer to the effect of this representation on Cartesian equations. Converting a pt(x,y) and f(x,y)=0 -> (xh,yh,h) then in homogenous equations mean (v*xh,v*yh,v*h) can be factored out.
• What you should get: By expressing the transformations with homogenous equations and coordinates, all transformations can be expressed as matrix multiplications.
Final Transformations - Compare Equations
PRPPRP
y
x
y
x
y
x
y
xR
PssSPPssSP
y
x
s
s
y
x
y
x
s
s
y
xssS
PttTPPttTP
y
x
t
t
y
x
y
x
t
t
y
xttT
yxyx
y
x
y
x
yx
yxyx
y
x
y
x
yx
1100
0cossin
0sincos
1
'
'
cossin
sincos
'
'
,,
1100
00
00
1
'
'
0
0
'
',
,,
1100
10
01
1
'
'
'
',
Combining Transformations
1
'
'
100
10
01
100
0cossin
0sincos
1
"
"
1
'
'
100
0cossin
0sincos
1
"
"
1100
10
01
1
'
'
)60(),2,4641.0(),4,3(
"'",'
y
x
t
t
y
x
y
x
y
x
y
x
t
t
y
x
RTP
PBAPPBPPAP
y
x
y
x
1100
cossin
sincos
1
"
"
1100
0cossin
0sincos
100
10
01
1
"
"
1100
cossincossin
sincossincos
1
"
"
y
x
t
t
y
x
y
x
t
t
y
x
y
x
tt
tt
y
x
y
x
y
x
yx
yx
How would we get:
How would we get:
Coordinate Systems
• Object Coordinates
• World Coordinates
• Eye Coordinates
Object Coordinates
World Coordinates
Screen Coordinates
Coordinate Hierarchy
O b jec t #1O b jec t C oo rd in a tes
T ra n sfo rm a tionO b je ct # 1 ->
W o rld
O b jec t #2O b jec t C oo rd in a tes
T ra n sfo rm a tionO b je ct # 2 ->
W o rld
O b jec t #3O b jec t C oo rd in a tes
T ra n sfo rm a tionO b je ct # 3 ->
W o rld
W o rld C o o rd in a tes
T ra n sfo rm a tionW o rld -> S c re en
S c re en C oo rd in a tes
Let’s reexamine assignment 2b
Transformation Hierarchies
• For example:
Transformation Hierarchies
• Let’s examine:
Transformation Hierarchies
• What is a better way?
Transformation Hierarchies
• What is a better way?
Transformation Hierarchies
• We can have transformations be in relation to each other
B lueO b jec t C oo rd in a tes
T ra n sfo rm a tionB lu e -> R ed
R edO b jec t C oo rd in a tes
T ra n sfo rm a tionR e d -> G re en
G re enO b je ct 's C o o rd in a tes
T ra n sfo rm a tionG re e n -> W o rld
W o rld C o o rd in a tes
More Complex Models