geometric transformations jehee lee seoul national university
TRANSCRIPT
Geometric Transformations
Jehee Lee
Seoul National University
Transformations
• Linear transformations
• Rigid transformations
• Affine transformations
• Projective transformations
T
Global reference frame
Local moving frame
Linear Transformations
• A linear transformation T is a mapping between vector spaces– T maps vectors to vectors– linear combination is invariant under T
• In 3-spaces, T can be represented by a 3x3 matrix
)()()()( 11000
NN
N
iii TcTcTccT vvvv
major) (Row
major)(Column )(
3331
1333
Nv
vMvT
Examples of Linear Transformations
• 2D rotation
• 2D scaling
y
x
y
x
cossin
sincos
ys
xs
y
x
s
s
y
x
y
x
y
x
0
0
yx, yx ,
Examples of Linear Transformations
• 2D shear– Along X-axis
– Along Y-axis
y
dyx
y
xd
y
x
10
1
dxy
x
y
x
dy
x
1
01
Examples of Linear Transformations
• 2D reflection– Along X-axis
– Along Y-axis
y
x
y
x
y
x
10
01
y
x
y
x
y
x
10
01
Properties of Linear Transformations
• Any linear transformation between 3D spaces can be represented by a 3x3 matrix
• Any linear transformation between 3D spaces can be represented as a combination of rotation, shear, and scaling
• Rotation can be represented as a combination of scaling and shear
Changing Bases
• Linear transformations as a change of bases
yx, yx ,
0v
1v1v
0v
y
x
y
x
yxyx
1010
1010
vvvv
vvvv
Changing Bases
• Linear transformations as a change of bases
yx, yx ,
0v
1v1v
0v
11001
11000
vvv
vvv
bb
aa
y
xT
y
x
ba
ba
y
x
y
x
ba
ba
y
x
11
00
11
001010 vvvv
Affine Transformations
• An affine transformation T is an mapping between affine spaces– T maps vectors to vectors, and points to points– T is a linear transformation on vectors– affine combination is invariant under T
• In 3-spaces, T can be represented by a 3x3 matrix together with a 3x1 translation vector
)()()()( 11000
NN
N
iii TcTcTccT pppp
131333)( TpMpT
Homogeneous Coordinates
• Any affine transformation between 3D spaces can be represented by a 4x4 matrix
• Affine transformation is linear in homogeneous coordinates
110)( 131333 pTMpT
Examples of Affine Transformations
• 2D rotation
• 2D scaling
1100
0cossin
0sincos
1
y
x
y
x
yx, yx ,
11100
00
00
1
ys
xs
y
x
s
s
y
x
y
x
y
x
Examples of Affine Transformations
• 2D shear
• 2D reflection
11100
010
01
1
y
dyx
y
xd
y
x
11100
010
001
1
y
x
y
x
y
x
Examples of Affine Transformations
• 2D translation
11100
10
01
1y
x
y
x
ty
tx
y
x
t
t
y
x
Examples of Affine Transformations
• 2D transformation for vectors– Translation is simply ignored
00100
10
01
0
y
x
y
x
t
t
y
x
y
x
Examples of Affine Transformations
• 3D rotation
11000
0cossin0
0sincos0
0001
1
z
y
x
z
y
x
11000
0100
00cossin
00sincos
1
z
y
x
z
y
x
11000
0cos0sin
0010
0sin0cos
1
z
y
x
z
y
x
Composite Transformations
• Composite 2D Translation
),(
),(),(
2121
2211
yyxx
yxyx
tttt
ttttT
T
TT
100
10
01
100
10
01
100
10
01
21
21
1
1
2
2
yy
xx
y
x
y
x
tt
tt
t
t
t
t
Composite Transformations
• Composite 2D Scaling
),(
),(),(
2121
2211
yyxx
yxyx
ssss
ssssT
S
SS
100
00
00
100
00
00
100
00
00
21
21
1
1
2
2
yy
xx
y
x
y
x
ss
ss
s
s
s
s
Composite Transformations
• Composite 2D Rotation
)(
)()(
12
12
R
RRT
100
0)cos()sin(
0)sin()cos(
100
0cossin
0sincos
100
0cossin
0sincos
1212
1212
11
11
22
22
Composing Transformations
• Suppose we want,
• We have to compose two transformations
)90( R )3,(xT
Composing Transformations
• Matrix multiplication is not commutative
)3,()90()90()3,( xx TRRT
Translationfollowed by
rotation
Translationfollowed by
rotation
Composing Transformations
– R-to-L : interpret operations w.r.t. fixed coordinates
– L-to-R : interpret operations w.r.t local coordinates
)90()3,( RT xT
)90( R )3,(xT
)90( R)3,(xT
(Column major convention)
Pivot-Point Rotation
• Rotation with respect to a pivot point (x,y)
100
sin)cos1(cossin
sin)cos1(sincos
100
10
01
100
0cossin
0sincos
100
10
01
),()(),(
xy
yx
y
x
y
x
yxTRyxT
Fixed-Point Scaling• Scaling with respect to a fixed point (x,y)
100
)1(0
)1(0
100
10
01
100
00
00
100
10
01
),(),(),(
yss
xss
y
x
s
s
y
x
yxTssSyxT
yy
xx
y
x
yx
Scaling Direction
• Scaling along an arbitrary axis
)(),()(1 RssSR yx
)(1 R),( yx ssS)(R
Properties of Affine Transformations
• Any affine transformation between 3D spaces can be represented as a combination of a linear transformation followed by translation
• An affine transf. maps lines to lines
• An affine transf. maps parallel lines to parallel lines
• An affine transf. preserves ratios of distance along a line
• An affine transf. does not preserve absolute distances and angles
Review of Affine Frames
• A frame is defined as a set of vectors {vi | i=1, …, N} and a point o– Set of vectors {vi} are bases of the associate vector
space– o is an origin of the frame– N is the dimension of the affine space– Any point p can be written as
– Any vector v can be written as
NNccc vvvop 2211
NNccc vvvv 2211
Changing Frames
• Affine transformations as a change of frame
yx,
0v
1v
111010
1010
y
x
y
x
yxyx
ovvovv
ovvovv
0v1v
o
o
Changing Frames
• Affine transformations as a change of frame
ovvo
vvv
vvv
100
11001
11000
cc
bb
aa
11001
11001
111
000
111
000
1010
y
x
cba
cba
y
x
y
x
cba
cba
y
x
ovvovv
yx,
0v
1v0v
1v
o
o
Changing Frames
• In case the xyz system has standard bases
Rigid Transformations
• A rigid transformation T is a mapping between affine spaces– T maps vectors to vectors, and points to points– T preserves distances between all points– T preserves cross product for all vectors (to avoid
reflection)
• In 3-spaces, T can be represented as
1det and
where,)( 131333
RIRRRR
TpRpTT
T
Rigid Body Rotation
• Rigid body transformations allow only rotation and translation
• Rotation matrices form SO(3)– Special orthogonal group
IRRRR TT
1det R
(Distance preserving)
(No reflection)
Rigid Body Rotation
• R is normalized– The squares of the elements in any row or column
sum to 1
• R is orthogonal– The dot product of any pair of rows or any pair
columns is 0
• The rows (columns) of R correspond to the vectors of the principle axes of the rotated coordinate frame
IRRRR TT
3D Rotation About Arbitrary Axis
3D Rotation About Arbitrary Axis
1. Translation : rotation axis passes through the origin
2. Make the rotation axis on the z-axis
3. Do rotation
4. Rotation & translation
),,( 111 zyxT
)()( yx RR
)(zR
)()( 111 xy RRT
3D Rotation About Arbitrary Axis
• Rotate u onto the z-axis
3D Rotation About Arbitrary Axis• Rotate u onto the z-axis
– u’: Project u onto the yz-plane to compute angle – u’’: Rotate u about the x-axis by angle – Rotate u’’ onto the z-axis
3D Rotation About Arbitrary Axis
• Rotate u’ about the x-axis onto the z-axis– Let u=(a,b,c) and thus u’=(0,b,c)– Let uz=(0,0,1)
22cos
cb
c
z
z
uu
uu
bx
zxz
u
uuuuu sin22
sincb
bb
z
uu
3D Rotation About Arbitrary Axis• Rotate u’ about the x-axis onto the z-axis
– Since we know both cos and sin , the rotation matrix can be obtained
– Or, we can compute the signed angle
– Do not use acos() since its domain is limited to [-1,1]
1000
00
00
0001
)(
2222
2222
cb
c
cb
bcb
b
cb
c
x R
),(atan22222 cb
b
cb
c
Euler angles
• Arbitrary orientation can be represented by three rotation along x,y,z axis
1000
0
0
0CS-SSCCC
)()()(),,(
CCSCS
SCCSSCCSSSCS
SSCSC
RRRR xyzXYZ
Gimble
• Hardware implementation of Euler angles• Aircraft, Camera
Euler Angles
• Rotation about three orthogonal axes– 12 combinations
• XYZ, XYX, XZY, XZX• YZX, YZY, YXZ, YXY• ZXY, ZXZ, ZYX, ZYZ
• Gimble lock– Coincidence of inner most
and outmost gimbles’ rotation axes
– Loss of degree of freedom
Euler Angles
• Euler angles are ambiguous– Two different Euler angles can represent the same
orientation
– This ambiguity brings unexpected results of animation where frames are generated by interpolation.
),2
,0 and )0,2
, 21 (R(θ),r,r(rR zyx
Taxonomy of Transformations
• Linear transformations– 3x3 matrix– Rotation + scaling + shear
• Rigid transformations– SO(3) for rotation– 3D vector for translation
• Affine transformation– 3x3 matrix + 3D vector or 4x4 homogenous matrix– Linear transformation + translation
• Projective transformation– 4x4 matrix– Affine transformation + perspective projection
Taxonomy of Transformations
Projective
Affine
Rigid
Composition of Transforms
• What is the composition of linear/affine/rigid transformations ?
• What is the linear (or affine) combination of linear (or affine) transformations ?
• What is the linear (or affine) combination of rigid transformations ?
OpenGL Geometric Transformations
• glMatrixMode(GL_MODELVIEW);
OpenGL Geometric Transformations
• Construction– glLoadIdentity();– glTranslatef(tx, ty, tz);– glRotatef(theta, vx, vy, vz);
•(vx, vy, vz) is automatically normalized– glScalef(sx, sy, sz);– glLoadMatrixf(Glfloat elems[16]);
• Multiplication– glMultMatrixf(Glfloat elems[16]);– The current matrix is postmultiplied by the matrix – Row major
Hierarchical Modeling
• A hierarchical model is created by nesting the descriptions of subparts into one another to form a tree organization
OpenGL Matrix Stacks
• Four matrix modes– Modelview, projection, texture, and color– glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, stackSize);
• Stack processing– The top of the stack is the “current” matrix– glPushMatrix(); // Duplicate the current matrix at the top
– glPopMatrix(); // Remove the matrix at the top
Programming Assignment #1
• Create a hierarchical model using matrix stacks• The model should consists of three-dimensional
primitives such as polygons, boxes, cylinders, spheres and quadrics.
• The model should have a hierarchy of at least three levels
• Animate the model to show the hierarchical structure– Eg) a car driving with rotating wheels– Eg) a runner with arms and legs swing
• Make it aesthetically pleasing or technically illustrative