2D Transformations - Basics of Viewing 1683152046587
2D Transformations - Basics of Viewing 1683152046587
in C Programming
NTA UGC NET June
2019
(Computer Science)
2D TRANSFORMATIONS
2D Transformations
• What is transformations?
– The geometrical changes of an object from a current state to
modified state.
• Why the transformations is needed?
– To manipulate the initially created object and to display the
modified object without having to redraw it.
• 2 ways
2D Transformations
– Object Transformation
• Alter the coordinates descriptions an object
• Translation, rotation, scaling etc.
• Coordinate system unchanged
– Coordinate transformation
• Produce a different coordinate system
Matrix Math
• Why do we use matrix?
– More convenient organization of data.
– More efficient processing
– Enable the combination of various concatenations
• Matrix addition and subtraction
c a c
a = b d
b d
Matrix Math
• Matrix Multiplication
– Dot product
a b e = ae + bf
c d f ce + df
a b =
[e f ] [ae + cf
c d
be + df ]
a c =
[e f ] [ae + bf
b d
ce + df ]
Matrix Math
• We’ll use the column-vector representation for a point.
• Which implies that we use pre-multiplication of the transformation – it
appears before the point to be transformed in the equation.
A B x Ax + By
C =
D y Cx + Dy
Translation
• A translation moves all points in an
object along the same straight-line
path to new positions.
• The path is represented by a vector, ?
called the translation or shift vector.
• We can write the components: ty=4
p'x = px + tx
(2, 2) tx = 6
p'y = py + ty
• or in matrix form:
x’ P' = Px + T tx
y’ = y + ty
Rotation
• A rotation repositions
all points in an object
along a circular path in P’
the plane centered at
the pivot point.
P
• or in matrix form:
P' = R • P
• can be clockwise (-ve) or y’ P(x,y)
counterclockwise (+ve as our r y
example).
• Rotation matrix x’ x
cos sin
R=
sin cos
Rotation
• Example
– Find the transformed point, P’, caused by rotating P= (5, 1) about
the origin through an angle of 90.
5 0 1 1
=
5 1 + 1 0
1
=
5
•
Scaling
Scaling changes the size of an object
and involves two scale factors, Sx and
Sy for the x- and y- coordinates
respectively. P’
• Example :
•P(2, 5), Sx = 0.5, Sy = 0.5 P(2, 5)
•Find P’ ?
P’
Scaling
P’
P(2, 5)
• The fact that all the points along each line can be mapped back to the same
point in 2D gives this coordinate system its name – homogeneous coordinates.
Matrix Representation
• Point in column-vector:
x
y
1
• Our point now has three coordinates. So our matrix is needs to be
3x3.
• Translation x 1 0 t x x
y = 0 1 t y
y
1 0 0 1 1
Matrix Representation
• Rotation
x cos sin 0 x
y = sin cos 0 y
1 0 0 1
1
x s x 0 0 x
• Scaling y = 0
sy 0 y
1 0 0 1
1
Composite Transformation
• We can represent any sequence of transformations as a single matrix.
– No special cases when transforming a point – matrix • vector.
– Composite transformations – matrix • matrix.
• Composite transformations:
– Rotate about an arbitrary point – translate, rotate, translate
– Scale about an arbitrary point – translate, scale, translate
– Change coordinate systems – translate, rotate, scale
a b e f i j ÷ = a b ei + fk ej + fl
c d g h k l ÷
c d gi + hk gj + hl
+ + + + + +
= aei afk bgi bhk aej afl bgj bhl
cei + cfk + dgi + dhk cej + cfl + dgj + dhl
Composition Properties
• Is matrix multiplication commutative?
?
–A.B=B.A
a b e f ae + bg af + bh
c =
d g h ce + dg cf + dh
e f a b ea + fc eb + fd
g =
h c d ga + hc gb + hd
Order of operations
So, it does matter. Let’s look at an example:
1. Translate 1. Rotate
2. Rotate 2. Translate
Composite Transformation Matrix
• Arrange the transformation matrices in order from right to left.
• General Pivot- Point Rotation
• Operation :-
1. Translate (pivot point is moved to origin)
2. Rotate about origin
3. Translate (pivot point is returned to original position)
T(pivot) • R() • T(–pivot)
1 0 tx cos -sin 0 1 0 -tx
0 1 ty sin cos 0 0 1 -ty
0 0 1 . 0 0 1
. 0 0 1
1 0 tx cos -sin -tx cos+ ty sin
0 1 ty sin cos -tx sin - ty cos
0 0 1 . 0 0 1
cos -sin -tx cos+ ty sin + tx
sin cos -tx sin - ty cos + ty
Composite Transformation Matrix
• Example
– Perform 60 rotation of a point P(2, 5) about a pivot point (1,2).
Find P’?
cos -sin -tx cos+ ty sin + tx x Sin 60 = 0.8660
sin cos -tx sin - ty cos + ty . y
cos 60 = 1/2
0 0 1 1
2 0 -2( 2) + 2 6 10
0 3 -2(3) + 2 . 8 = 20
0 0 1 1 1
Rotation
• Example
– (UGCNET-June2016-III-14) A point P(5,1) is rotated by 900
about a pivot point (2,2). What is the coordinate of new
transformed point P’ ?
– (A) (3,5) (B) (5,3) (C) (2,4) (D) (1,5)
Composite Transformation Matrix
General Scaling Direction
Operation :-
1. Rotate (scaling direction align with the coordinate axes)
2. Scale with respect to origin
3. Rotate (scaling direction is returned to original position)
1 0 0
0 1 0
0 0 1
Other transformations
Reflection:
1 0 0 0 1 0
0 1 0
1 0 0
0 0 1 0 0 1
Scaling
Translation in 3D
Rotation in 3D
Rotation now has more possibilities in 3D:
Rotation in 3D
What about the inverses of 3D rotations?
Shearing in 3D
Compositing multiple transformations
• Expressed as matrix multiplications:
p’ = M1 M2 p
• The objects are described with respect to their actual physical size in the real
world, and then mapped onto screen co-ordinates.
– We could have a model of a whole room, full of objects such as chairs, tablets
and students.
– We may want to view the whole room in one go, or zoom in on one single
object in the room.
– We may want to display the object or scene on the full screen, or we may
only want to display it on a portion of the screen.
• 2Dbeen
Once a model has Viewing
constructed, the
• programmer can specify a view.
Viewport
Image
Coordinate Representations
• General graphics packages are designed to be used with Cartesian
coordinate specifications.
0 x nc 1 0 y nc 1
Viewport
window-to-viewport transformation
The Viewing Pipeline
1. Construct the scene in world coordinate using the output primitives.
2. Obtain a particular orientation for the window by set up a two dimensional
viewing coordinate system in the world coordinate, and define a window in
the viewing coordinate system. Transform descriptions in world coordinates
to viewing coordinates (clipping).
The Viewing Pipeline
3. Define a viewport in normalized coordinate, and map the viewing coordinate
description of the scene to normalized coordinate
4. (All parts lie outside the viewport are clipped), and contents of the viewport
are transferred to device coordinates.
1
Viewing Coordinate Normalized Coordinate Device Coordinate
The Viewing Pipeline
The Viewing Pipeline
• By Changing the position of the viewport, we can view objects at different
position on the display area of an output device.
The Viewing Pipeline
• By varying the size of viewport, we can change the size of displayed objects
(zooming).