chapter 4.2
- Introduce standard transformations
- Rotations
- Translation
- Scaling
- Shear
- Derive homogeneous coordinate transformation matrices
- Learn to build arbitrary transformation matrices from simple transformations
General Transformations
- A transformation maps points to other points and/or vectors to other vectors
Affine Transformations
- Line preserving
- Characteristic of many physically
important transformations
- Rigid body transformations: rotation, translation
- Scaling, shear
- Importance in graphics is that we need
only transform endpoints of line segments and let
implementation draw
line segment between the transformed endpoints
Pipeline Implementation
Notation
- We will be working with
both
coordinate-free representations of transformations and
representations
within a particular frame
- P, Q, R: points in an affine space
- u, v, w: vectors in an affine space
- a, b, g: scalars
- P, Q, R:
representations
of points
- array of 4 scalars in homogeneous coordinates
- u, v, w:
representations
of vectors
- array of 4 scalars
in
homogeneous coordinates
- array of 4 scalars
in
homogeneous coordinates
Translation
- Move (translate, displace) a point to a new location
- Displacement determined by a vector d
- Three degrees of freedom
- P`=P+d
How many ways?
- Although we can move a point to a new location in infinite ways, when we move many points there is usually only one way
Translation Using Representations
- Using the homogeneous coordinate
representation in some frame
P=[ x y z 1]T
d=[dx dy dz 0]T
- Hence P`= P + d or
x`=x + dx
y`=y + dy
z`=z + dz
Translation Matrix
- We can also express translation using a
4
x 4 matrix T in homogeneous coordinates
P`=TP whereT = T(dx, dy, dz) = - This form is better for implementation because all affine transformations can be expressed this way and multiple transformations can be concatenated together
Rotation (2D)
- Consider rotation about the origin by degrees
- radius stays the same, angle increases by
Rotation about the z axis
- Rotation about z axis in three dimensions leaves all points with the same z
- Equivalent to rotation in two
dimensions
in planes of constant z
- x`=x cos -
y sin
y`= x sin + y cos
z`=z
- x`=x cos -
y sin
- or in homogeneous coordinates
P`=R z()P
Rotation Matrix
Rotation about x and y axes
- Same argument as for rotation about z
axis
- For rotation about x axis, x is unchanged
- For rotation about y axis, y is unchanged
Scaling
- Expand or contract along each axis (fixed point of origin)
Reflection
- corresponds to negative
scale
factors (Stencil
Activity)
Inverses
- Although we could compute inverse
matrices
by general formulas, we can use simple geometric
observations
- Translation: T-1(dx, dy, dz) = T(-dx, -dy, -dz)
- Rotation: R-1()
= R(-)
- Holds for any rotation matrix
- Note that since cos(-)
= cos() and sin(-)=-sin()
- R-1() = R T()
- Scaling: S-1(sx, sy, sz)
=
S(1/sx, 1/sy, 1/sz)
Concatenation
- We can form arbitrary affine transformation matrices by multiplying together rotation, translation, and scaling matrices
- Because the same transformation is applied to many vertices, the cost of forming a matrix M=ABCD is not significant compared to the cost of computing Mp for many vertices p
- The difficult part is how to form a desired transformation from the specifications in the application
Order of Transformations
- Note that matrix on the right is the first applied
- Mathematically, the following are
equivalent
- P`= ABCP = A(B(CP))
- Note many references use row matrices
to
represent points. In terms of row matrices
P`T = pTCTBTAT - OpenGL assumes the column matrix form.
General Rotation About the Origin
- A rotation by about an arbitrary axis can be decomposed into the concatenation of rotations about the x, y, and z axes
- R() = Rz(z) Ry(y) Rx(x)
- x, y, z are called the Euler angles
- Note that rotations do not commute. We can use rotations in another order but with different angles
Rotation About a Fixed Point other than the Origin
- Move fixed point to origin
- Rotate
- Move fixed point back
- M = T(pf) R() T(-pf)
Instancing
- In modeling, we often start with a simple object centered at the origin, oriented with the axis, and at a standard size
- We apply an instance transformation to
its
vertices to
- Scale
- Orient
-
Locate
Shear
- Helpful to add one more basic transformation
- Equivalent to pulling faces in opposite directions
Shear Matrix
- Consider simple shear along x axis