3D Geometrical Transformations

advertisement
3D Geometrical Transformations
Foley & Van Dam, Chapter 5
3D Geometrical Transformations
• 3D point representation
• Translation
• Scaling, reflection
• Shearing
• Rotations about x, y and z axis
• Composition of rotations
• Rotation about an arbitrary axis
• Transforming planes
3D Coordinate Systems
Reminder: Cross Product
UxV
Right-handed coordinate system:
z
V
T
y
x
Left-handed coordinate system:
VxU
y
xˆ
U u V
3D Point Representation
• A 3D point P is represented in homogeneous
coordinates by a 4-dimensional vector:
P
ª
«
«
«
«
¬
x
y
z
1
º
ªD x
»
«
» { «D y
»
«D z
»
«
¼
¬ D
yˆ
u
v
x
x
zˆ
y
y
u
v
sin
ªu
«
« u
« u
¬
z
z
T
v z u
z v x u
x v y u
y
v y
x v z
y v x
z
• In homogeneous coordinates, 3D affine
transformations are represented by 4x4 matrices:
ª
«
«
«
«
¬
º
»
»
»
»
¼
V
º
»
»
»
¼
3D Geometrical Transformations
x º
y »»
z »
»
1 ¼
•As for 2D points:
p
u
v
z
ª
«
«
«
«
¬
nˆ U
U u V
x
U
a
b
c
d
e
f
g
0
h
0
i
0
t
º
»
y »
tz »
»
1 ¼
x
t
•A point transformation is performed:
ª
«
«
«
«
¬
x 'º
y ' »»
z '»
»
1 ¼
ª
«
«
«
«
¬
a
d
b
e
c
f
g
0
h
0
i
0
t
t
º
»
y »
tz »
»
1 ¼
x
ª
«
«
«
«
¬
x
y
z
1
º
»
»
»
»
¼
3D Translation
3D Scaling
ª
«
«
«
«
¬
P in translated to P' by:
ª1
«0
«
«0
«
¬0
0
1
0
0
0
1
0
0
t
t
º
»
»
tz »
»
1 ¼
Or: T P
x
y
ª
«
«
«
«
¬
x
y
z
1
ª
«
«
«
«
¬
º
»
»
»
»
¼
x 'º
y ' »»
z '»
»
1 ¼
ª x t
« y t
«
« z t
«
1
¬
P '
1
y
z
º
»
»
»
»
¼
P '
0
0
0
0
0
b
0
0
0
c
0
y
0
0
1
0
0
0
0
0
º
»
»
»
»
1 ¼
x
y
z
º
»
»
»
»
1 ¼
x 'º
y ' »»
z '»
»
1 ¼
ª
«
«
«
«
¬
ax º
»
»
»
»
¼
by
cz
1
P '
y
x
y
x
1
P '
P
3D Shearing
• Shearing:
ª
«
«
«
«
¬
x º
y »»
z »
»
1 ¼
•Reflections through the xz and the yz planes are
defined similarly
ª1
«c
«
«e
«
¬0
a
b
1
f
d
1
0
0
0 º
0 »»
0 »
»
1 ¼
ª
«
«
«
«
¬
x º
y »»
z »
»
1 ¼
ª x ay bz
« cx y dz
«
« ex fy z
«
1
¬
º
»
»
»
»
¼
• Change in each coordinate is a linear combination of
all three
• Transforms a cube into a general parallelepiped
3D Rotation
3D Rotation
• To generate a rotation in 3D we have to
specify:
– axis of rotation (2 d.o.f.)
– amount of rotation (1 d.o.f.)
• Counterclockwise rotation about x-axis
ª
«
«
«
«
¬
x 'º
y ' »»
z '»
»
1 ¼
ª1
«0
«
«0
«
¬0
0
cos T
sin T
0
•Note, the axis passes through the origin
p '
y
x
ª
«
«
«
«
¬
S P
S
ª
«
«
«
«
¬
x º
y »»
z »
»
1 ¼
z
P
• A reflection through the xy plane:
0
1
0
ª
«
«
«
«
¬
z
3D Reflection
ª1
«0
«
«0
«
¬0
0 º
0 »»
0 »
»
1 ¼
Or
z
x
Inverse: T
x
a
0
sin T
cos T
0
R
x
0
0
0
1
º
»
»
»
»
¼
(T ) p
z
z
x
y
ª
«
«
«
«
¬
x
y
z
1
º
»
»
»
»
¼
3D Rotation
3D Rotation
• Counterclockwise rotation about y-axis
ª
«
«
«
«
¬
x 'º
y ' »»
z '»
»
1 ¼
ª cos T
«
0
«
« sin T
«
0
¬
0
1
0
0
sin T
0
cos T
0
p '
R
y
0
0
0
1
º
»
»
»
»
¼
ª
«
«
«
«
¬
x
y
z
1
º
»
»
»
»
¼
• Counterclockwise rotation about z-axis
ª
«
«
«¬
x 'º
y '»
z '»
1 »¼
ª cos ș
« sin ș
0
«
0
«¬
p '
(T ) p
sin ș
cos ș
0
0
R
y
º
»
»
»¼
ª
«
«
«¬
x
y
z
1
º
»
»
»¼
(T ) p
y
x
Composite Rotation
Change of Coordinates
• Rx, Ry, and Rz, can perform any rotation
about an axis passing through the origin
•Inverse rotation:
p
0
0
0
1
z
z
x
z
0
0
1
0
R 1 (T ) p ' R ( T ) p ' R T (T )
• Problem: Given the XYZ orthonormal coordinate
system, find a transformation M, that maps a
representation in XYZ into a representation in the
orthonormal system UVW, with the same origin
•The matrix M transforms the UVW vectors to the
z
XYZ vectors
u=(ux,uy,uz)
y
x
v=(vx,vy,vz)
Change of Coordinates
Change of Coordinates
• Solution: M is rotation matrix whose rows
are U,V, and W:
ª
«
«
«
«
¬
M
u
x
vx
w x
0
u
u
y
v y
w y
0
0 º
0 »»
0 »
»
1 ¼
z
vz
w z
0
MU
• Note: the inverse transformation is the
transpose:
M
1
M
T
ªu x
«u y
«
«u z
¬« 0
v x
v y
v z
0
w
w
w
0
x
y
z
• Let's check the transformation of U under M:
0
0
0
1
º
»
»
»
¼»
ª
«
«
«
«¬
u x
v x
w x
0
ªu
«
«
«
¬
u y
v y
w y
0
2
x
u z
v z
w z
0
u 2y u
0
0
1
2
z
º
»
»
»
¼
0
0
0
1
º
»
»
»
»¼
ªu x
«u y
«
«u z
«¬ 1
ª1
«0
«0
«¬ 1
º
»
»
»¼
º
»
»
»
»¼
X
• Similarly, V goes into Y, and W goes into Z
Change of Coordinates
Rotation About an Arbitrary Axis
• Let's check the transformation of the X axis
under M-1:
M
1
ª1
«0
«0
¬« 1
ªu x
«u y
«
«u z
¬« 0
º
»
»
¼»
v x
v y
v z
0
w
w
w
0
0
0
0
1
x
y
z
º
»
»
»
¼»
ª1
«0
«0
¬« 1
ªu x
«u y
«
«u z
¬« 1
º
»
»
¼»
º
»
»
»
¼»
U
• Axis of rotation can be located at any point:
6 d.o.f. (we must specify 2 points p1 and p2)
• The idea: make the axis coincident with
one of the coordinate axes (z axis), rotate by
T, and then transform back
z
p2
p1
• Similarly, Y goes into V, and Z goes into W
y
x
Rotation About an Arbitrary Axis
y
z
step 3 y
p2 p1
p1 p2
Initial Position
y
p1
step 1
zTranslate p
1
x
p2
z
y
x
p1
p2
x
z
Rotate p2 onto the z Axis
Translate to the
Original Position
Rotation About Arbitrary Axis
• Constructing an orthonormal system along the
rotation axis:
– A vector W parallel to the rotation axis:
s
p
p 1;
2
s
s
w
– A vector V perpendicular to W:
a
§ 0 ·
¨ ¸
w u ¨ 0 ¸
¨ 1 ¸
© ¹
;
v
T
• Step 2:
M
• Step 3:
• Step 4:
a
a
• Step 5:
v u w
1
§
¨
¨
¨
¨
©
u x
u y
u z
0
§
¨
¨
¨
¨
©
1
0
0
0
• Composition: P c
x
y
z
1
u y
v y
w y
0
u z
v z
w z
0
T
1
1
·
¸
¸
¸
¸
¹
0
0
0
1
sin ș
cos ș
0
0
v x
v y
v z
0
0
1
0
0
1
w
w
w
0
0
0
1
0
1
z
x 1
y 1
z1
1
0
0
0
1
·
¸
¸
¸
¹
·
¸
¸
¸
¸
¹
·
¸
¸
¸
¸
¹
1
M
0
0
1
0
0
0
0
1
x
y
·
¸
¸
¸
¸
¹
R M T P
Transforming Planes
• Plane representation:
– By three non-collinear points
– By implicit equation:
>A
A x B y C z D
ªA
«D
¬
B
D
C
D
B
C
P0
D
º
1»
¼
P1
– A vector U forming a right-handed orthogonal system
with W and V:
u
0
0
1
0
§ cos ș
¨ sin ș
¨
0
¨
0
©
1
T
0
1
0
0
§ u x
¨
¨ v x
¨ w x
¨ 0
©
R
M
1
0
0
0
§
¨
¨
¨
¨
©
y
step 5
p1
z p2
p2
original Orientation
y
step 2
p1
x
z Rotate the Axis to the
x
to the Origin
• Step1:
x
Rotate the Object
Around the z Axis
step 4
Rotation About an Arbitrary Axis
>x
P2
y
z
1@
@
ª
«
«
«
«
¬
x º
y »»
z »
»
1 ¼
0
Transforming Planes
Transforming Planes
• One way to transform a plane is by transforming
any three non-collinear points on the plane
• Note that:
>A
B
C
D
• Another way is to transform the plane equation:
Given a transformation T such that
>A
'
B '
C '
D '@
ª
«
«
«
«
¬
x 'º
y ' »»
z '»
»
1 ¼
x
y
z
1
º
»
»
»
»
¼
0
• Thus, the transformation that we should
apply to the plane equation is:
T [x, y, z, 1] = [x', y', z', 1]
find [A',B',C',D'], such that:
@
ª
«
T 1T «
«
«
¬
0
> Ac
Bc C c
D c@
>A
B
C
D @ T 1
Download