Nima Kalantari
CSCE 441 - Computer Graphics
Transformations 3D & Coordinates
Some slides from Ren Ng and Shinjiro Sueda; Some inspired by Steve Seitz
3D Transformations
3D Transformations
3D Transformations
y
z
x
Rotation �around �x-axis
3D Rotations
z
y
x
Rodrigues’ Rotation Formula
Transformations
How do we transform a mesh?
p1
M
p’1
p’1 = Mp1
How do we transform a mesh?
p2
M
p’2
p’2 = Mp2
How do we transform coordinates?
Coordinate Frames
Coordinate Change: 2D Example
World
Coordinate Change: 2D Example
World
Coordinate Change: 2D Example
Coordinate Change: 2D Example
Coordinate Change: Extension to 3D
Chain coordinate transforms
1
2
3
4
Hierarchical transformation
Make a Robot Arm
Make a Robot Arm
Target
S
Make a Robot Arm
Target
S
Make a Robot Arm
Target
S
S
Make a Robot Arm
Target
S
S
T
Make a Robot Arm
Target
S
S
T
Make a Robot Arm
Target
S
S
T
S
Make a Robot Arm
Target
S
S
T
S
T
Make a Robot Arm
Target
S
S
T
S
T
R
Make a Robot Arm
Target
S
S
T
S
T
R
Make a Robot Arm
Make a Robot Arm
Target
S
S
T
S
Make a Robot Arm
Target
S
S
T
S
T
Make a Robot Arm
Target
S
S
T
S
T
Make a Robot Arm
Target
S
S
T
S
T
R
Make a Robot Arm
Target
S
S
T
S
T
R
T
Make a Robot Arm
Target
S
S
T
S
T
R
T
Problems
TRTRTS
Problems
Hierarchical Modeling
Global Coordinate
Hierarchical Modeling
Hierarchical Modeling
Sp
Sp
Sp
Hierarchical Modeling
Tp
Tp
Tp
Sp
Sp
Sp
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Tc
Rc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Tc
Rc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Hierarchical Modeling
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Part Transforms
Independent
Coord. Transforms
Children inherits parent’s transform
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Effect of each term
Sp
Sp
Sp
Tp
Tp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Putting it all together
Sp
Putting it all together
Sp
Tp
Putting it all together
Sp
Tp
Putting it all together
Sp
Tp
Rc
Putting it all together
Sp
Tp
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Putting it all together
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Robot – Assignment 2
Robot – Assignment 2
Robot – Assignment 2
Torso
Head
R Upper Arm
L Upper Arm
R Upper Leg
L Upper Leg
R Lower Arm
L Lower Arm
R Lower Leg
L Lower Leg
Tp, Sp, Tc, Rc
User Controlled
Implementation using a stack
Stack
Push
Stack
Push
Push
Stack
Push
Push
Push
Stack
Push
Push
Push
Pop
Stack
Push
Push
Push
Pop
Pop
Stack
Push
Push
Push
Pop
Pop
Push
Matrix Stack for Graph Traversal
Matrix Stack for Graph Traversal
I
Matrix Stack for Graph Traversal
I
I
I
Push
Matrix Stack for Graph Traversal
I
I
I
…
A
…
A
A
Push
Push
…
Matrix Stack for Graph Traversal
I
I
I
…
A
…
A
A
Push
Push
…
Matrix Stack for Graph Traversal
…
A
…
Matrix Stack for Graph Traversal
…
A
…
A
A
Push
…
Matrix Stack for Graph Traversal
…
A
…
A
A
Push
…
…
A
A T
Translate
Matrix Stack for Graph Traversal
…
A
…
A
A
Push
…
…
A
A T
Translate
…
A
A T S
Scale
Matrix Stack for Graph Traversal
…
A
…
A
A
Push
…
…
A
A T
Translate
…
A
A T S
Scale
…
A
A T S R
Rotate
Matrix Stack for Graph Traversal
…
A
…
A
A
Push
…
…
A
A T
Translate
…
A
A T S
Scale
…
A
A T S R
Rotate
…
A
Pop
Robot
Robot
Robot
I
Stack
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Robot
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
I
Stack
Robot
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
I
Stack
Robot
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
I
Stack
Robot
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
I
Stack
Robot
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
I
Stack
Robot
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
Tc
Rc
Tp
Sp
I
Stack
Recap
Sp
Tp
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Sp
Tp
Rc
Tc
Rc
Tc
Rc
Tc
Robot
I
Stack
C
P
C
P
C
P
C
P
C
P
Robot
C
P
C
P
C
P
C
P
C
P
I
Stack
Robot
I
Stack
Push()
Pop()
I
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)Pop()
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Pop()
C
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Part transform(P)
Pop()
CP
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
Pop()
CP
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
Pop()
Pop()
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Pop()
C
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Pop()
CC
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Pop()
CC
CC
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Part transform(P)
Pop()
CC
CCP
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
Pop()
CC
CCP
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
Pop()
Pop()
CC
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()Pop()
CC
CC
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()P
Coordinate transform(C)
op()
CC
CCC
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()P
Coordinate transform(C)
Push()
op()
CC
CCC
CCC
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()P
Coordinate transform(C)
Push()
Part transform(P)
op()
CC
CCC
CCCP
C
P
C
P
C
P
C
P
C
P
Robot
I
Stack
C
Push()P
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
op()
CC
CCC
CCCP
C
P
C
P
C
P
C
P
C
P
Robot
Stack
Push()P
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
Pop()
op()
C
P
C
P
C
P
C
P
C
P
I
C
CC
CCC
Robot
Stack
Push()P
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
Pop()
Pop()
op()
C
P
C
P
C
P
C
P
C
P
I
C
CC
Robot
I
Stack
TcRc
C
P
C
P
C
P
C
P
C
P
Push()P
Coordinate transform(C)
Push()
Part transform(P)
DRAWCUBE
Pop()
Pop()
Pop()
op()
Robot
Stack
Push()op()
C
P
C
P
C
P
C
P
C
P
I
C
Robot
I
Stack
C
Push()
…op()
C
C
P
C
P
C
P
C
P
C
P