











Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Material Type: Notes; Class: COMPUTER GRAPHICS; Subject: Computer Science; University: Rice University; Term: Unknown 1989;
Typology: Study notes
1 / 19
This page cannot be seen from the preview
Don't miss anything!












Lecture 4: Affine Transformations
for Satan himself is transformed into an angel of light. 2 Corinthians 11:
1. Transformations
Transformations are the lifeblood of geometry. Euclidean geometry is based on rigid motions
-- translation and rotation -- transformations that preserve distances and angles. Congruent
triangles are triangles where corresponding lengths and angles match.
The turtle uses translation (FORWARD), rotation (TURN), and uniform scaling (RESIZE) to
move about on the plane. The turtle can also apply translation (SHIFT), rotation (SPIN), and
scaling (SCALE) to generate new shapes from previously defined turtle programs. These three
transformations -- translation, rotation and uniform scaling -- are called conformal transformations.
Conformal transformations preserve angles, but not distances. Similar triangles are triangles where
corresponding angles agree, but the lengths of corresponding sides are scaled. The ability to scale
is what allows the turtle to generate self-similar fractals like the Sierpinski gasket.
In Computer Graphics transformations are employed to position, orient, and scale objects as
well as to model shape. Much of elementary Computational Geometry and Computer Graphics is
based upon an understanding of the effects of different transformations.
The transformations that appear most often in 2-dimensional Computer Graphics are the affine
transformations. Affine transformations are composites of four basic types of transformations:
translation, rotation, scaling (uniform and non-uniform), and shear. Affine transformations do not
necessarily preserve either distances or angles, but affine transformations map straight lines to
straight lines and affine transformations preserve ratios of distances along straight lines. For
example, affine transformations map midpoints to midpoints. In this lecture we are going to
develop explicit formulas for various affine transformations; in the next lecture we will use these
affine transformations as an alternative to turtle programs to model shapes for Computer Graphics.
2. Conformal Transformations
Among the most important affine transformations are the conformal transformations:
translation, rotation, and uniform scaling. We shall begin our study of affine transformations by
developing explicit formulas for these conformal transformations.
To fix our notation, we will use upper case letters
P , Q , R ,K from the middle of the alphabet to
denote points and lower case letters
u , v , w ,K from the end of the alphabet to denote vectors. Lower
case letters with subscripts will denote rectangular coordinates. Thus, for example, we shall write
P = ( p 1 , p 2 ) to denote that
( p 1 , p 2 ) are the rectangular coordinates of the point P. Similarly, we
shall write
v = ( v 1 , v 2 ) to denote that
( v 1 , v 2 ) are the rectangular coordinates of the vector v.
2.1 Translation. We have already encountered translation in our study of turtle graphics (see
Figure 1). To translate a point
P = ( p 1 , p 2 ) by a vector
w = ( w 1 , w 2 ), we set
new = P + w (1)
or in terms of coordinates
p 1
new = p 1
p 2
new = p 2
Vectors are unaffected by translation, so
v
new = v.
We can rewrite these equations in matrix form. Let I denote the
2 × 2 identity matrix; then
new = P ∗ I + w
v
new = v ∗ I.
€
€
new
€
new
Figure 1: Translation. Points are affected by translation; vectors are not affected by translation.
2.2 Rotation. We also encountered rotation in turtle graphics. Recall from Lecture 1 that to
rotate a vector
v = ( v 1 , v 2 ) through an angle
θ , we introduce the orthogonal vector
v
⊥ = (− v 2 , v 1
and set
v
new = cos( θ) v + sin( θ) v
⊥
or equivalently in terms of coordinates
v 1
new = v 1 cos( θ) − v 2 sin( θ)
v 2
new = v 1 sin( θ) + v 2 cos( θ).
Introducing the rotation matrix
Rot ( θ) =
cos( θ) sin( θ)
− sin( θ) cos( θ)
we can rewrite Equation (2) in matrix form as
v
new = v ∗ Rot ( θ). (3)
Again, in affine geometry we want not only to scale vectors, but also to scale uniformly the
distance of points from a fixed point. Since
P = Q + ( P − Q ) , scaling the distance of an arbitrary
point P from a fixed point Q by the factor s is equivalent to scaling the length of the vector
by the factor s and then adding the resulting vector to Q (see Figure 3). Thus the formula for
scaling the distance of an arbitrary point P from a fixed point Q by the factor s is
new = Q + ( P − Q ) ∗ Scale ( s ) = P ∗ Scale ( s ) + Q ∗ (^) ( I − Scale ( s )). (6)
Notice that if Q is the origin, then this formula reduces to
new = P ∗ Scale ( s ) ,
so
Scale ( s ) is also the matrix that represents scaling the distance of points from the origin.
new
{
Figure 3: Uniform scaling about a fixed point Q. Since the point Q is fixed and since
P = Q + ( P − Q ) , scaling the distance of a point P from the point Q by the factor s is equivalent to
scaling the vector
P − Q by the factor s and then adding the resulting vector to Q.
3. General Affine Transformations
The three conformal transformations -- translation, rotation, and uniform scaling -- all have the
following form: there exists a matrix M and a vector w such that
v
new = v ∗ M
new = P ∗ M + w.
In fact, this form characterizes all affine transformations. That is, a transformation is said to be
affine if and only if there is a matrix M and a vector w so that Equation (7) is satisfied.
The matrix M represents a linear transformation on vectors. Recall that a transformation L on
vectors is linear if
L ( u + v ) = L ( u ) + L ( v )
L ( cv ) = cL ( v ).
Matrix multiplication represents a linear transformation because matrix multiplication distributes
through vector addition and commutes with scalar multiplication -- that is,
( u + v ) ∗ M = u ∗ M + v ∗ M
( cv ) ∗ M = c ( v ∗ M ).
The vector w in Equation (7) represents translation on the points. Thus an affine
transformation can always be decomposed into a linear transformation followed by a translation.
Notice that translation is not a linear transformation, since translation does not satisfy Equation (8);
therefore translation cannot be represented by
2 × 2 matrix multiplication.
Affine transformations can also be characterized abstractly in a manner similar to linear
transformations. A transformation A is said to be affine if A maps points to points, A maps vectors
to vectors, and
A ( u + v ) = A ( u ) + A ( v )
A ( c v ) = c A ( v )
A ( P + v ) = A ( P ) + A ( v ).
The first two equalities in Equation (9) say that an affine transformation is a linear transformation
on vectors; the third equality says that affine transformations are well behaved with respect to the
addition of points and vectors. It is easy to check that translation is an affine transformation.
In terms of coordinates, linear transformations can be written as
x
new = a x + b y
y
new = c x + d y
⇔ ( x
new , y
new ) = ( x , y ) ∗
a c
b d
whereas affine transformations have the form
x
new = a x + b y + e
y
new = c x + d y + f
⇔ ( x
new , y
new ) = ( x , y ) ∗
a c
b d
+^ ( e ,^ f^ )^.
There is also a geometric way to characterize affine transformations. Affine transformations
map lines to lines (or if the transformation is degenerate a line can get mapped to a single point).
For suppose that L is the line determined by the point P and the direction vector v. Then the point
Q lies on the line L if and only if there is a constant
λ such that
Q = P + λ v
If A is an affine transformation, then by Equation (9)
A ( Q ) = A ( P + λ v ) = A ( P ) + λ A ( v ).
Therefore the point
A ( Q ) lies on the line
A ( L ) determined by the point
A ( P ) and the vector
A ( v ).
(If
A ( v ) = 0 , then the transformation A is degenerate and
A ( L ) collapses to a single point.)
Moreover, suppose Q is a point on the line segment
PR that splits
PR into two segments in the
ratio
a / b. If A is an affine transformation, then
A ( Q ) splits the line segment
A ( P ) A ( R ) into two
segments in the same ratio
a / b -- that is, affine transformations preserves ratios of distances along
straight lines (see Figure 4). We can prove this result in the following fashion. Since Q lies along
Since points are affected by translation and vectors are not, the affine coordinate for a point is
1 ; the affine coordinate for a vector is
P = ( p 1 , p 2 , 1 ) for
points and
v = ( v 1 , v 2 ,0) for vectors.
Affine transformations can now be represented by
3 × 3 matrices, where the third column is
always
T
. The affine transformation
v
new = v ∗ M
new = P ∗ M + w.
represented by the
2 × 2 matrix M and the translation vector w can be rewritten using affine
coordinates in terms of a single
3 × 3 matrix
w 1
Now
( v
new , 0) = ( v , 0) ∗
M = ( v , 0) ∗
w 1
=^ ( v^ ∗^ M ,^ 0)
new , 1 ) = ( P , 1 ) ∗
w 1
=^ ( P^ ∗^ M^ +^ w ,^1 ).
Notice how the affine coordinate -- 0 for vectors and 1 for points -- is correctly reproduced by
multiplication with the last column of the matrix
M. Notice too that the 0 in the third coordinate for
vectors effectively insures that vectors ignore the translation represented by the vector w.
Below we rewrite the standard conformal transformations -- translation, rotation, and uniform
scaling -- in terms of
3 × 3 affine matrices.
Translation -- by the vector
w = ( w 1 , w 2
Trans ( w ) =
w 1
w 1 w 2
Rotation -- around the Origin through the angle
θ
Rot ( θ, Origin ) =
Rot ( θ) 0
cos( θ) sin( θ) 0
−sin( θ) cos( θ) 0
Rotation -- around the point
Q = ( q 1 , q 2 ) through the angle
θ
Rot ( Q ,θ) =
Rot ( θ) 0
Q ∗ (^) ( I − Rot ( θ)) 1
cos( θ) sin( θ) 0
−sin( θ) cos( θ) 0
q 1 (^1 −^ cos(^ θ)) +^ q 2 sin( θ) − q 1 sin( θ) + q 2 (^1 −^ cos(^ θ)) 1
Uniform Scaling -- around the Origin by the factor s
Scale ( Origin , s ) =
s I 0
s 0 0
0 s 0
Uniform Scaling -- around the point
Q = ( q 1 , q 2 ) by the factor s
Scale ( Q , s ) =
s I 0
Q ∗( 1 − s ) I 1
s 0 0
0 s 0
( 1 − s ) q 1 ( 1 − s ) q 2
3.2 Image of One Point and Two Vectors. Fix a point Q and two linearly independent vectors
u , v. Since the vectors
u , v form a basis, for any vector w there are scalars
σ, τ such that
w = σ u + τ v.
Hence for any point P , there are scalars
s , t such that
P − Q = s u + t v
or equivalently
P = Q + s u + t v
Therefore if A is an affine transformation, then by Equation (9)
A ( P ) = A ( Q ) + s A ( u ) + t A ( v )
A ( w ) = σ A ( u ) + τ A ( v ).
Thus if we know the effect of the transformation A on one point Q and on two linearly independent
vectors
u , v , then we know the affect of A on every point P and every vector w. Hence, in addition
to conformal transformations, there is another important way to define affine transformations of the
plane: by specifying the image of one point and two linearly independent vectors.
Geometrically, Equation (10) says that an affine transformation A maps the parallelogram
determined by the point Q and the vectors
u , v into the parallelogram determined by the point
and the vectors
A ( u ), A ( v ) (see Figure 5). Thus affine transformations map parallelograms into
parallelograms.
then
( B^ ×^ C^ C^ ×^ A^ A^ ×^ B )
Det ( N )
where
× denotes cross product. This result is easily verified using the standard properties of the
cross product, which we shall review in Lecture 9.
3.3 Non-Uniform Scaling. Uniform scaling scales distances by the same amount in all
directions; non-uniform scaling scales distances by different amounts in different directions. We
are interested in non-uniform scaling for many reasons. For example, we can apply non-uniform
scaling to generate an ellipse by scaling a circle from its center along a fixed direction (see Figure
6). To scale the distance from a fixed point Q along an arbitrary direction w by a scale factor s, w e
can apply our method for generating arbitrary affine transformations by specifying the image of
one point and two linearly independent vectors (see Figure 7).
Figure 6: Scaling a circle from its center along a fixed direction generates an ellipse.
€
Q
€
w
€
€
w ⊥
€
Q
€
€ s w
w ⊥
Figure 7: Scaling from the fixed point Q in the direction w by the scale factor s. The point Q is
fixed, the vector w is scaled by s, and the orthogonal vector
w
⊥ remains fixed. Thus non-uniform
scaling maps a square into a rectangle.
Let
Scale ( Q , w , s ) denote the transformation that scales the distance from a fixed point Q along
an arbitrary direction w by a scale factor s. To find the
3 × 3 matrix that represents the
transformation
Scale ( Q , w , s ) , we need to know the image of one point and two linearly independent
vectors. Consider the point
Q and the vectors w and
w
⊥ , where
w
⊥ is a vector of the same length
as w perpendicular to w. It is easy to see how the transformation
Scale ( Q , w , s ) affects
Q , w , w
⊥ :
Q → Q because Q is a fixed point of the transformation;
w → s w because distances are scaled by the factor s along the direction w;
w
⊥ → w
⊥ because distances along the vector
w
⊥ are not changed, since
w
⊥ is
orthogonal to the scaling direction w.
Therefore by the results of the previous section:
Scale ( Q , w , s ) =
w 0
w
⊥ 0
− 1
∗
s w 0
w
⊥ 0
Now recall that if
w = ( w 1 , w 2 ), then
w
⊥ = (− w 2 , w 1 ). Therefore in terms of coordinates
Scale ( Q , w , s ) =
w 1 w 2
− w 2 w 1
q 1 q 2
− 1
∗
s w 1 s w 2
− w 2 w 1
q 1 q 2
Notice, in particular, that if Q is the origin and w is the unit vector along the x -axis, then
w
⊥ is
the unit vector along the y -axis, so
w 1 w 2
− w 2 w 1
q 1 q 2
= Identity Matrix.
Therefore scaling along the x -axis is represented by the matrix
Scale ( Origin , i , s ) =
s 0 0
Similarly, scaling along the y -axis is represented by the matrix
Scale ( Origin , j , s ) =
0 s 0
3.4 Image of Three Non-Collinear Points. If we know the image of three non-collinear points
under an affine transformation, then we also know the image one point and two linearly independent
vectors. Indeed suppose that we know the image of the three non-collinear points
1
2
3 under
the affine transformation A. Then
u = P 2
1 and
v = P 3
1 are certainly linearly independent
To prove the results in Equation (12), observe that by Equations (10) and (11)
1
2
1 ) + β 3
3
1
or equivalently
1 = β 2
2
1 ) + β 3
3
1
Crossing both sides with the vector
2
1 yields
1
2
1 ) = β 3
3
1
2
1
Therefore taking the magnitude of both sides and solving for
β 3 , we find that
| β 3
1
2
1
3
1
2
1
But we shall show in Lecture 11 that for any triangle
Area (Δ PQR ) =
Hence
| β 3
Area (Δ PP 1
2
Area (Δ P 1
2
3
Similar arguments give similar formulas for
β 1 .and
β 2
Now let A be an affine transformation and let
β 1 , β 2 , β 3 be the barycentric coordinates of the
point P relative to
1
2
3
. Then
P = β 1
1
2
3
so
A ( P ) = β 1
1 ) + β 2
2 ) + β 3
3
Hence
β 1 , β 2 , β 3 are the barycentric coordinates of the point
A ( P ) relative to
1
2
3
Therefore affine transformation preserve barycentric coordinates (see Figure 9).
€
1
€
2
€
3
€
€
P
€
€
€
€^ •
β 1
€
β 2
€
β 3
€
€
€
A ( P )
€
€
€
€
β 1
€
β 2
€
β 3 €
A
€
€
Figure 9: The image of three non-collinear points specifies a unique affine transformation that
preserves barycentric coordinates.
To find the
3 × 3 matrix M that represents an affine transformation A defined by the image of
three non-collinear points, we can proceed as in Section 3.2. Let
1
∗ , P 2
∗ , P 3
∗ be the images of the
points
1
2
3 under the transformation A. Using affine coordinates, we have
1
∗ , 1 ) = ( P 1
2
∗ , 1 ) = ( P 2
3
∗ , 1 ) = ( P 3
where
a c 0
b d 0
e f 1
Thus
1
∗ 1
2
∗ 1
3
∗ 1
Pnew
1
2
3
Pold
a c 0
b d 0
e f 1
M
Solving for M yields
old
− 1 ∗ P new
or equivalently if
k = ( x k , y k ) and
k
∗ = ( x k
∗ , y k
∗ ) for
k = 1 , 2 , 3 , then
1
2
3
− 1
1
∗ 1
2
∗ 1
3
∗ 1
x 1 y 1
x 2 y 2
x 3 y 3
− 1
x 1
∗ y 1
∗ 1
x 2
∗ y 2
∗ 1
x 3
∗ y 3
∗ 1
Notice the similarity to the matrix expression in Section 3.2 for the affine transformation defined by
the image of one point and two linearly independent vectors. The only differences are the ones
appearing in the first two rows of the third columns, indicating that two vectors have been replaced
by two points.
4. Summary
Below is a summary of the main high level concepts that you need to remember from this
lecture. Also listed below for your convenience are all the
3 × 3 matrices representing affine
transformations that we have derived in this lecture.
4.1 Affine Transformations and Affine Coordinates. Affine transformations are the
fundamental transformations of 2-dimensional Computer Graphics. There are several different
ways of characterizing affine transformations:
4.2 Matrices for Affine Transformations in the Plane
Translation -- by the vector
w = ( w 1 , w 2
Trans ( w ) =
w 1
w 1 w 2
Rotation -- around the Origin through the angle
θ
Rot ( θ, Origin ) =
Rot ( θ) 0
cos( θ) sin( θ) 0
−sin( θ) cos( θ) 0
Rotation -- around the point
Q = ( q 1 , q 2 ) through the angle
θ
Rot ( Q ,θ) =
Rot ( θ) 0
Q ∗ (^) ( I − Rot ( θ)) 1
cos( θ) sin( θ) 0
−sin( θ) cos( θ) 0
q 1 (^1 −^ cos(^ θ)) +^ q 2 sin( θ) − q 1 sin( θ) + q 2 (^1 −^ cos(^ θ)) 1
Uniform Scaling -- around the Origin by the factor s
Scale ( Origin , s ) =
s I 0
s 0 0
0 s 0
Uniform Scaling -- around the point
Q = ( q 1 , q 2 ) by the factor s
Scale ( Q , s ) =
s I 0
Q ∗( 1 − s ) I 1
s 0 0
0 s 0
( 1 − s ) q 1 ( 1 − s ) q 2
Non- Uniform Scaling -- around point
Q = ( q 1 , q 2 ) in direction
w = ( w 1 , w 2 ) by the factor s
Scale ( Q , w , s ) =
w 1 w 2
− w 2 w 1
q 1 q 2
− 1
∗
s w 1 s w 2
− w 2 w 1
q 1 q 2
Scaling from the Origin along the x-axis by the factor s
Scale ( Origin , i , s ) =
s 0 0
Scaling from the Origin along the y-axis by the factor s
Scale ( Origin , j , s ) =
0 s 0
Image of One Point
Q = ( x 3 , y 3 ) and Two Vectors
v 1 = ( x 1 , y 1
v 2 = ( x 2 , y 2
Image ( v 1 , v 2
x 1 y 1
x 2 y 2
x 3 y 3
− 1
x 1
∗ y 1
∗ 0
x 2
∗ y 2
∗ 0
x 3
∗ y 3
∗ 1
Image of Three Non-Collinear Points
1 = ( x 1 , y 1
2 = ( x 2 , y 2
3 = ( x 3 , y 3
Image ( P 1
2
3
x 1 y 1
x 2 y 2
x 3 y 3
− 1
x 1
∗ y 1
∗ 1
x 2
∗ y 2
∗ 1
x 3
∗ y 3
∗ 1
Inverse of a
3 × 3 Matrix
N = (^) ( A B C )
T
( B^ ×^ C^ C^ ×^ A^ A^ ×^ B )
Det ( N )
Exercises
new = ( 1 − s ) Q + sP.
w Q denote the vector from the point Q to the origin.
a. Without appealing to coordinates and without explicitly multiplying matrices, show that:
i.
Rot ( Q ,θ) = Trans (− w Q ) ∗ Rot ( θ) ∗ Trans ( w Q
ii.
Scale ( Q , s ) = Trans (− w Q ) ∗ Scale ( s ) ∗ Trans ( w Q
b. Give a geometric interpretation for the results in part a.
w Q denote the vector from the point Q to the origin, let i denote the unit vector along the x -
axis, and let
α denote the angle between the vectors w and i.
ScaleFactor ( M ) = det( M ).
vector that is not parallel to the line determined by the two points.
b. Let
1
∗ , P 2
∗ , v
∗ be the images of
1
2 , v under the affine transformation A. Find the
3 × 3 matrix M that represents the affine transformation A.
3 × 3 matrix corresponding to the affine transformation A. Show that
A ( i ) 0
A ( j ) 0
A ( Origin ) 1
w , w
⊥ into a parallelogram by tilting the edge
w
⊥ so that
w new
⊥ makes an angle of
θ with
w
⊥ (see
Figure 10). Show that:
a.
Shear ( Q , w , w
⊥ ,θ) =
w 0
w
⊥ 0
− 1
w 0
tan( θ) w + w
⊥ 0
b.
Shear ( Origin , i , j ,θ) =
tan( θ) 1 0
c.
det Shear ( Q , w , w
⊥ ,θ)
d. Shear preserves area.
€
w
⊥
⊥
new
⊥
Figure 10: Shear maps the rectangle with vertex Q and sides
w , w
⊥ into a parallelogram by tilting
the edge
w
⊥ so that
w new
⊥ makes an angle of
θ with
w
⊥ .