University of Babylon College of Information Technology Department of Information Network Day:

advertisement
University of Babylon
College of Information Technology
Department of Information Network
Day: Monday
Date: 25-11-2013
Stage: Second.
Topic: Introduction to Computer Graphics
Lecture6: TWO-DIMENSIONAL TRANSFORMATIONS.
General Objective:
The students will be able to do the variant two dimensional
transformations on any object.
Procedural Objective:
1. The students will be able to apply the translation to move any
object from one position to another.
2. The students will be able apply the scaling to resize any object.
3. The students will be able to apply the rotation to rotate any object
from its position to another depending on the given angle.
Teaching aids: Lecture (presented by MS-power point program on the
laptop), LCD monitor, discussion between lecturer and students,
whiteboard, pens.
1
TWO-DIMENSIONAL TRANSFORMATIONS
6.1 Introduction
With the procedures for displaying output primitives and their attributes, we can
create a variety of picture and graph forms. In many applications, there is also a need
for altering or manipulating displays. Sometimes we need to reduce the size of an
object or graph to place it into a larger display. Or we might want to test the
appearance of design patterns by rearranging the relative positions and sizes of the
pattern parts. For animation applications, we need to produce continuous motion of
displayed objects about the screen. These various manipulations are carried out by
applying appropriate geometric transformations to the coordinate points in a display.
The basic transformations are translation, scaling, and rotation. We first discuss
methods for performing these transformations and then consider how transformation
functions can be incorporated into a graphics package.
6.2 Basic Transformations
Displayed objects are defined by sets of coordinate points. Geometric transformations
are procedures for calculating new coordinate positions for these points, as required
by a specified change in size and orientation for the object.
Translation
A translation is a straight-line movement of an object from one position to another.
We translate a point from coordinate position (x, y) to a new position (x', y') by
adding translation distances, Tx and Ty, to the original coordinates:
x'=x+Tx,
y'=y+Ty
(6-1)
The translation distance pair
(Tx,Ty) is also called a
translation vector or shift vector.
Polygons are translated by
adding the specified translation
distances to the coordinates of
each line endpoint in the object.
Figure
(6-1)
illustrates
movement of a polygon to a
new position as determined by
the translation vector ( -20, 50).
FIGURE 6-1 Translation of an object
from position (a) to position (b) with
translation distances (-20, 50).
2
Objects drawn with curves are translated by changing the defining coordinates of the
object. To change the position of a circle or ellipse, we translate the center coordinates
and redraw the figure in the new location. Translation distances can be specified as
any real numbers (positive, negative, or zero). If an object is translated beyond the
display limits in device coordinates, the system might return an error message, clip off
the parts of the object beyond the display limits, or present a distorted picture.
Systems that contain no provision for handling coordinates beyond the display limits
will distort shapes because coordinate values overflow the memory locations. This
produces an effect known as wraparound, where points beyond the coordinate limits
in one direction will be displayed on the other side of the display device (Fig. 6-2).
FIGURE 6-2 possible effects of wraparound on the
display of a polygon with one vertex (P) specified
beyond the display coordinate limits. Point P is
wrapped around to position P', with a corresponding
distortion (solid lines) in the display of the figure.
Scaling
A transformation to alter the size of an object is called scaling. This operation can be
carried out for polygons by multiplying the coordinate values (x, y) for each boundary
vertex by scaling factors Sx and Sy to produce transformed coordinates (x',y'):
x'=x.Sx, y'=y.Sy
(6-2)
Scaling factor Sx scales objects in the x direction, while Sy scales in the y direction.
Any positive numeric values can be assigned to the scaling factors Sx and Sy. Values
less than 1 reduce the size of objects; values greater than 1 produce an enlargement.
Specifying a value of 1 for both Sx and Sy leaves the size of objects unchanged.
When Sx and Sy are assigned the same value, a uniform scaling is produced, which
3
maintains relative proportions of the scaled object. Unequal values for Sx and Sy are
often used in design applications, where pictures are constructed from a few basic
shapes that can be modified by scaling transformations (Fig. 6-3). When an object is
redrawn with scaling equations 6-2, the length of each line in the figure is scaled
according to the values assigned to Sx and Sy. In addition, the distance from each
vertex to the origin of the coordinate system is also scaled. Figure (6-4) illustrates
scaling a line by setting Sx and Sy to 1/2 in Eqs. 6-2. Both the line length and the
distance to the origin are reduced by a factor of 1/2. Enlarged objects are moved away
from the coordinate origin.
FIGURE 6-4 A line scaled with Eqs.
(6-2) and Sx= Sy = 1/2 is reduced in
size and moved closer to the
coordinate origin.
FIGURE 6-3 Turning a square (a)
into a rectangle (b) by setting Sx = 2
and Sv = 1.
Q3
We can control the location of a scaled object by choosing a position, called the fixed
point, which is to remain unchanged after the scaling transformation. Coordinates for
the fixed point, (Xf, Yf) can be chosen as one of the vertices, the center of the object,
or any other position (Fig. 6-5). A polygon is then scaled relative to the fixed point by
scaling the distance from each vertex to the fixed point. For a vertex with coordinates
(x, y), the scaled coordinates (x', y') are calculated as:
x'=xf+(x-xf)Sx, y'=yf+(y-yf)Sy
(6-3)
FIGURE 6-5 Scaling relative to a
chosen fixed point (xf, yf). Distances
from each polygon vertex to the
fixed
point
are
scaled
by
transformation equations (6-3).
4
We can rearrange the terms in these equations to obtain scaling transformations
relative to a selected fixed point as:
x'=x.Sx+(1-Sx)xf
(6-4)
y'=y.Sy+(1-Sy)yf
where the terms (1-Sx)xf and (1-Sy)yf are constant for all points in the object. As in
translation, a scaling operation might extend objects beyond display coordinate limits.
Transformed lines beyond these limits could be either clipped or distorted, depending
on the system in use.
Scaling transformations 6-4 are applied to the vertices of a polygon. Other types of
objects could be scaled with these equations by applying the calculations to each point
along the defining boundary. For standard figures, such as circles and ellipses, these
transformations can be carried out more efficiently by modifying distance parameters
in the defining equations. We scale a circle by adjusting the radius and possibly
repositioning the circle center.
Rotation
Transformation of object points along circular paths is called rotation. We specify this
type of transformation with a rotation angle, which determines the amount of rotation
for each vertex of a polygon. Figure 6-6 illustrates displacement of a point from
position (x, y) to position (x', y'), as determined by a specified rotation angle Ɵ
relative to the coordinate origin. In this figure, angle Ф is the original angular position
of the point from the horizontal. We can determine the transformation equations for
rotation of the point from the relationships between the sides of the right triangles
shown and the associated angles. Using these triangles and standard trigonometric
identities, we can write:
x'=r cos(Ф+Ɵ)=r cosФ cosƟ – r sinФ sinƟ
(6-5)
y'=r sin(Ф+Ɵ)= r sinФ cosƟ + r cosФ sinƟ
where r is the distance of the point from the origin.
FIGURE 6-6 Rotation of a point
from position (x, y) to position (x',y')
5
through a rotation angle Ɵ, specified
relative to the coordinate origin. The
original angular position of the point
from the x axis is Ф.
We also have:
x = r cos(Ф), y = r sin(Ф)
(6-6)
so that Eqs. 6-5 can be restated in terms of x and y as:
x'=x cosƟ- y sinƟ
(6-7)
y'=y cosƟ+x sinƟ
Positive values for Ɵ in these equations indicate a counterclockwise rotation, and
negative values for Ɵ rotate objects in a clockwise direction.
Objects can be rotated about an arbitrary point by modifying Eqs. 6-7 to include the
coordinates (xr, yr) for the selected rotation point (or pivot point). Rotation with
respect to an arbitrary rotation point is shown in Fig. 6-7. The transformation
equations for the rotated coordinates can be obtained from the trigonometric
relationships in this figure as:
x'=xr+(x-xr)cosƟ- (y-yr)sinƟ
(6-8)
y'=yr+(y-yr)cosƟ+(x-xr)sinƟ
FIGURE 6-7 Rotation of a point
from (x, y) to (x', y') through an
angle Ɵ, specified relative to a pivot
point at (xr, yr).
The pivot point for the rotation transformation can be set anywhere inside or beyond
the outer boundary of an object. When the pivot point is specified within the object
boundary, the effect of the rotation is to spin the object about this internal point. With
an external pivot point, all points of the object are displaced along circular paths about
the pivot point.
6
6.3 Matrix Representations and Homogeneous Coordinates
There are many applications that make use of the basic transformations in various
combinations. A picture, built up from a set of defined shapes, typically requires each
shape to be scaled, rotated, and translated to fit into the proper picture position. This
sequence of transformations could be carried out one step at a time. First, the
coordinates defining the object could be scaled, then these scaled coordinates could be
rotated, and finally the rotated coordinates could be translated to the required location.
A more efficient approach is to calculate the final coordinates directly from the initial
coordinates using matrix methods, with each of the basic transformations expressed in
matrix form.
We can write transformation equations in a consistent matrix form by first expressing
points as homogeneous coordinates. This means that we represent a two-dimensional
coordinate position (x, y) as the triple [xh,yh,w], where:
xh=x.w, yh=y.w
(6-9)
The parameter w is assigned a nonzero value in accordance with the class of
transformations to be represented. For the two-dimensional transformations discussed
in the last section, we can set w = 1. Each two-dimensional coordinate position then
has the homogeneous coordinate form [x y 1]. Other values for w are useful with
certain three-dimensional viewing transformations.
With coordinate positions expressed in homogeneous form, the basic transformation
equations can be represented as matrix multiplications employing 3 by 3
transformation matrices. Equations 6-1, for translation, become:
(6-10)
We also introduce the abbreviated notation T(Tx, Ty) for the 3 by 3 transformation
matrix with translation distances Tx and Ty:
(6-11)
7
Using this notation, we can write the matrix form for the translation equations more
compactly as:
P' = P . T(Tx,Ty)
(6-12)
where P' = [x' y' 1] and P = [x y 1] are 1 by 3 matrices (three-element row vectors) in
the matrix calculations.
Similarly, the scaling equations 6-2 are now written as:
(6-13)
or as:
P' = P . S(Sx, Sy)
(6-14)
With:
(6-15)
as the 3 by 3 transformation matrix for scaling with parameters Sx and Sy.
Equations 6-7, for rotation, are written in matrix form as:
(6-16)
or as:
p' = p . R(Ɵ)
(6-17)
where:
(6-18)
is the 3 by 3 transformation matrix for rotation with parameter Ɵ.
8
Matrix representations are standard methods for implementing the basic
transformations in graphics systems. In many systems, the scaling and rotation
transformations are always stated relative to the coordinate origin, as in Eqs. 6-13 and
6-16. Rotations and scalings relative to other points are handled as a sequence of
transformations. An alternate approach is to state the transformation matrix for scaling
in terms of the fixed-point coordinates and to specify the transformation matrix for
rotation in terms of the pivot-point coordinates.
6.4 Composite Transformations
Any sequence of transformations can be represented as a composite transformation
matrix by calculating the product of the individual transformation matrices. Forming
products of transformation matrices is usually referred to as a concatenation, or
composition, of matrices.
Translations
Two successive translations of an object can be carried out by first concatenating the
translation matrices, then applying the composite matrix to the coordinate points.
Specifying the two successive translation distances as (Tx1, Ty1) and (Tx2, Ty2), we
calculate the composite matrix as:
(6-19)
which demonstrates that two successive translations are additive. Equation 6-19
can be written as:
T(Tx1, Ty1) • T(Tx2, Ty2) = T(Tx1 + Tx2, Ty1 + Ty2) (6-20)
The transformation of coordinate points for a composite translation is then expressed
in matrix form as:
P' = P . T(Txl + Tx2, Tyl + Ty2)
(6-21)
Scalings
Concatenating transformation matrices for two successive scaling operations produces
the following composite scaling matrix:
S(Sx1, Sy1) . S(Sx2, Sy2) = S(Sx1 . Sx2, Sy1 . Sy2) (6-22)
9
The resulting matrix in this case indicates that successive scaling operations are
multiplicative. That is, if we were to triple the size of an object twice in succession,
the final size would be nine times that of the original.
Rotations
The composite matrix for two successive rotations is calculated as:
R(Ɵ1). R(Ɵ2)= R(Ɵ1+ Ɵ2)
(6-23)
As is the case with translations, successive rotations are additive.
Scaling Relative to a Fixed Point
Using the transformation matrices for translation (Eq. 6-11) and scaling (Eq.6-15), we
can obtain the composite matrix for scaling with respect to a fixed point (xf, yf) by
considering a sequence of three transformations. This transformation sequence is
illustrated in Fig. 6-8. First, all coordinates are translated so that the fixed point is
moved to the coordinate origin. Second, coordinates are scaled with respect to the
origin. Third, the coordinates are translated so that the fixed point is returned to its
original position. The matrix multiplications for this sequence yield:
(6-24)
FIGURE
6-8
Sequence
of
transformations necessary to scale an
object with respect to a fixed point
using transformation matrices (6-11)
and (6-15).
11
Rotation About a Pivot Point
Figure 6-9 illustrates a transformation sequence for obtaining the composite matrix
for rotation about a specified pivot point (xr, yr). First, the object is translated so that
the pivot point coincides with the coordinated origin. Second, the object is rotated
about the origin. Third, the object is translated so that the pivot point returns to its
original position. This sequence is represented by the matrix product:
(6-25)
FIGURE
6-9
Sequence
of
transformations necessary to rotate
an object about a pivot point using
transformation matrices (6-11) and
(6-18).
11
Download