2D TRANSFORMATIONS. Course Website:

Unit-III PPT Slides Text Books: 1. “Computer Graphics C version”, Donald Hearn and M.Puline Baker, Pearson Education 2. Computer Graphics Principles ...
Author: Guest
128 downloads 0 Views 574KB Size
Unit-III PPT Slides

Text Books: 1. “Computer Graphics C version”, Donald Hearn and M.Puline Baker, Pearson Education 2. Computer Graphics Principles & Practice second edition in C,Foley VanDam, Fiener and Hughes, Pearson Educatio

2D TRANSFORMATIONS

Course Website: http://www.comp.dit.ie/bmacnamee

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 a b

±

a± c

c d

=

b± d

Matrix Math – How about it? – a

c e

±

b

d f

Matrix Multiplication – Dot product a c

b d

.

e g

f h

=

a.e + b.g c.e + d.g

a.f + b.h c.f + d.h

Matrix Math What about this? 1

2

2 3

1 3

.

.

Type of matrix a

b

1 3

2 1

2 1

=

=

6

tak boleh!!

a b

Row-vector

Column-vector

6

Matrix Math Is there a difference between possible representations? a b   e  ae+ bf   •  =  +   c d   f   ce df 

[e

a b  f ]•   = [ae+ cf c d 

be+ df ]

[e

a c  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       

What if we needed to switch to the other convention?

Translation A translation moves all points in an object along the same straightline path to new positions. The path is represented by a vector, called the translation or shift vector. We can write the components: p'x = px + tx p'y = py + ty or in matrix form: P' = P + T x’ y’

=

x y +

tx ty

?

ty=4 (2, 2)

tx = 6

Rotation A rotation repositions all points in an object along a circular path in the plane centered at the pivot point. First, we’ll assume the pivot is at the origin.

P’

θ P

Rotation • Review Trigonometry => cos φ = x/r , sin φ= y/r • x = r. cos φ, y = r.sin φ P’(x’, y’) => cos (φ+ θ) = x’/r •x’ = r. cos (φ+ θ) •x’ = r.cosφcosθ θ -r.sinφsinθ θ •x’ = x.cos θ – y.sin θ =>sin (φ+ θ) = y’/r y’ = r. sin (φ+ θ) •y’ = r.cosφsinθ θ + r.sinφcosθ θ •y’ = x.sin θ + y.cos θ

θ r y’ θ

x’

P(x,y) r

φ

y

x Identity of Trigonometry

Rotation • We can write the components: p'x = px cos θ – py sin θ p'y = px sin θ + py cos θ P’(x’, y’)

• or in matrix form: P' = R • P • θ can be clockwise ((-ve) or counterclockwise (+ve as our example). • Rotation matrix

cosθ R=  sin θ

− sin θ  cosθ 

θ y’

P(x,y) r

θ φ x’

x

y

Rotation Example – Find the transformed point, P’, caused by rotating P= (5, 1) about the origin through an angle of 90°. cos θ  sin θ 

− sin θ   x   x ⋅ cosθ − y ⋅ sin θ  •  =   cosθ   y   x ⋅ sin θ + y ⋅ cos θ  5 ⋅ cos 90 − 1 ⋅ sin 90 =  5 ⋅ sin 90 + 1 ⋅ cos 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. • Scales are about the origin. • We can write the components: p'x = sx • px p'y = sy • py or in matrix form: P' = S • P Scale matrix as:

sx S= 0

0 s y 

P’

P



Scaling If the scale factors are in between 0 and 1  the points will be moved closer to the origin  the object will be smaller.

• Example : •P(2, 5), Sx = 0.5, Sy = 0.5 •Find P’ ?

P(2, 5)

P’



Scaling If the scale factors are in between 0 and 1  the points will be moved closer to the origin  the object will be smaller.

P’

• Example : •P(2, 5), Sx = 0.5, Sy = 0.5 •Find P’ ? •If the scale factors are larger than 1  the points will be moved away from the origin  the object will be larger.

• Example : •P(2, 5), Sx = 2, Sy = 2 •Find P’ ?

P(2, 5)

P’

Scaling • If the scale factors are the same, Sx = Sy  uniform scaling • Only change in size (as previous example)

P’

•If Sx ≠ Sy  differential scaling. •Change in size and shape •Example : square  rectangle •P(1, 3), Sx = 2, Sy = 5 , P’ ? P(1, 2) What does scaling by 1 do? What is that matrix called? What does scaling by a negative value do?

Combining transformations We have a general transformation of a point: P' = M • P + A When we scale or rotate, we set M, and A is the additive identity. When we translate, we set A, and M is the multiplicative identity. To combine multiple transformations, we must explicitly compute each transformed point. It’d be nicer if we could use the same matrix operation all the time. But we’d have to combine multiplication and addition into a single operation.

Homogenous Coordinates y

y w x

 x

Let’s move our problem into 3D. Let point (x, y) in 2D be represented by point (x, y, 1) in the new space. Scaling our new point by any value a puts us somewhere along a particular line: (ax, ay, a). A point in 2D can be represented in many ways in the new space. (2, 4) ----------  (8, 16, 4) or (6, 12, 3) or (2, 4, 1) or etc.

Homogenous Coordinates • • •

We can always map back to the original 2D point by dividing by the last coordinate (15, 6, 3) --- (5, 2). (60, 40, 10) - ?.



Why do we use 1 for the last coordinate?



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θ  y′ =  sin θ     1   0

− sin θ cosθ 0

0  x  0 •  y  1  1 

Scaling

 x′   s x  y ′ =  0     1   0

0 sy 0

0  x  0 •  y  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

Does the order of operations matter?

Composition Properties Is matrix multiplication associative? ?

– (A.B).C = A.(B.C)  a b   e   c d • g   

f  i   •  h   k

j  ae+ bg af + bh  i • = +  l  ce dg cf + dh k

j  l

aei + bgi + afk + bhk aej + bgj + afl + bhl =  + + + + + + cei dgi cfk dhk cej dgj cfl dhl   a b    e   •   c d    g

f  i • h  k

j   a b   ei + fk ej + fl    =  • +  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

f  ae + bg =  h   ce + dg

af + bh  cf + dh 

f  a b   ea + fc • =   h   c d   ga + hc

eb + fd   gb + hd 

a b   e c d  •  g    e g 

Order of operations So, it does matter. Let’s look at an 1. example: Translate 2. Rotate

1. 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 0

0 1 0

tx ty 1

.

cosθ sinθ 0

-sinθ cosθ 0

0 0 1

1

.

0 0

1 0 0

0 1 0

cosθ sinθ 0

tx ty 1

.

-sinθ cosθ 0

0 tx 1 ty 0

cosθ -sinθ -tx cosθ+ ty sinθ sinθ cosθ -tx sinθ - ty cosθ -tx 0 cosθ+ t0y sinθ + tx 1 -tx sinθ - ty cosθ + ty 1

1

Composite Transformation Matrix Example – Perform 60° rotation of a point P(2, 5) about a pivot point (1,2). Find P’? cosθ sinθ 0

-sinθ cosθ 0

-tx cosθ+ ty sinθ + tx -tx sinθ - ty cosθ + ty 1

0.5 -0.866 -1.0.5 + 2.0.866 + 1 0.866 0.5 -1.0.866- 2.0.5 + 2 0 0 1 0.5 - 0.866 2.232 0.866 0.5 0.134 0 0 1

.

2 5 1

=

.

.

x y 1

Sin 60 = 0.8660 Kos 60 = 1/2

2 5 1 -1.098 4.366 1

P’ = (-1, 4)

Without using composite homogenus matrix Example – Perform 90° rotation of a point P(5, 1) about a pivot point (2, 2). Find P’?

1. Translate pivot point ke asalan ( tx = -2, ty = -2) – Titik P(5, 1 )  P’ (3, -1)

2. Rotate P ‘ = 90 degree P’(3, -1) -- > kos 90 -sin 90 3 = 0 -1 3 = 1 sin 90 kos 90 -1 1 0 -1 3 3. Translate back ke pivot point (tx = 2 , ty = 2) titik (1, 3 )  titik akhir (3, 5)

Composite Transformation Matrix General Fixed-Point Scaling Operation :1. Translate (fixed point is moved to origin) 2. Scale with respect to origin 3. Translate (fixed point is returned to original position) T(fixed) • S(scale S(scale)) • T( T(– –fixed) Find the matrix that represents scaling of an object with respect to any fixed point? Given P(6, 8) , Sx = 2, Sy = 3 and fixed point (2, 2). Use that matrix to find P’?

Answer 1 0 0 1 0 0

0 1 0 0 tx 1 ty 0

tx ty 1

. .

Sx 0 0 Sx 0 0

0 Sy 0

0 0 1

1

.

0 0

0 tx 1 ty 0

0 -tx Sx Sy -ty Sy 0 1

0 3 0

1

-2( 2) + 2 -2(3) + 2 1

.

6 8 1

1 =

x =6, y = 8, Sx = 2, Sy = 3, tx =2, ty = 2

2 0 0

-

=

10 20 1

Sx 0 0

0 -tx Sx + tx Sy -ty Sy + ty 0 1

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) R(–θ) • S(scale) • R(θ) Find the composite transformation matrix by yourself !!

latihan Dapatkan titik akhir bagi P(5, 8) jika titik tersebut diputarkan sebanyak 90 darjah, kemudian ditranslate sebanyak (-6, 9) dan akhirnya diskala dengan faktor skala (2, 0.5).

S

.

Sx 0 0

0 Sy 0

0 0 1

Sx 0 0

0 Sy 0

0 0 1

T

.

.

1 0 0

0 1 0

.

cosθ sinθ 0

tx ty 1

R

.

-sinθ tx cosθ ty 0 1

Sxcosθ Sx(-sinθ) Sx tx Sy sinθ Sy cosθ Sy ty 0 0 1

cosθ sinθ 0

-sinθ 0 cosθ 0 0 1

Other transformations Reflection:

1 0 0 0 − 1 0   0 0 1

x-axis

y-axis

− 1 0 0  0 1 0    0 0 1

Other transformations Reflection:

− 1 0 0  0 − 1 0    0 0 1

origin

0 1 0 1 0 0   0 0 1

line x=y

Other transformations Shear: x-direction direction 1 shx 0 0 1 0   0 0 1

1 sh  y  0

0 0 1 0 0 1

y-

Coordinate System Transformations •

We often need to transform points from one coordinate system to another: 1. We might model an object in non-Cartesian space (polar) 2. Objects may be described in their own local system 3. Other reasons: textures, display, etc

Computer Graphics 3: 2D Transformations

Course Website: http://www.comp.dit.ie/bmacnamee

Contents In today’s lecture we’ll cover the following: – Why transformations – Transformations • Translation • Scaling • Rotation

– Homogeneous coordinates – Matrix multiplications – Combining transformations

Images taken from Hearn & Baker, “Computer Graphics with OpenGL” (2004)

Why Transformations?

In graphics, once we have an object described, transformations are used to move that object, scale it and rotate it

Translation Simply moves an object from one position to another

xnew = xold + dx y

ynew = yold + dy

6 5 4 3 2 1

0

1

2

3

4

5

6

7

8

9

10

Note: House shifts position relative to origin

x

Translation Example y 6 5 4

(2, 3) 3 2 1

(1, 1) 0

(3, 1)

1

2

3

4

5

6

7

8

9

10

x

Scaling Scalar multiplies all coordinates WATCH OUT: Objects grow and move! xnew = Sx × xold ynew = Sy × yold y 6 5 4 9  3  

6 3  

3 2  2 1   

1

3 1  

0 1

2

3

4

5

6

7

8

9

10

x

Note: House shifts position relative to origin

Scaling Example y 6 5 4

(2, 3) 3 2 1

(1, 1) 0

1

(3, 1)

2

3

4

5

6

7

8

9

10

Rotation Rotates all coordinates by a specified angle xnew = xold × cosθ – yold × sinθ ynew = xold × sinθ + yold × cosθ Points are always rotated about the origin y 6 5 4 3 2

θ=

1

π 6

0 1

2

3

4

5

6

7

8

9

10

x

Rotation Example y 6 5 4

(4, 3) 3 2 1

(3, 1) 0

1

2

(5, 1)

3

4

5

6

7

8

9

10

Homogeneous Coordinates A point (x, y) can be re-written in homogeneous coordinates as (xh, yh, h) The homogeneous parameter h is a nonzero value such that:

xh x= h

yh y= h We can then write any point (x, y) as (hx, hy, h) We can conveniently choose h = 1 so that (x, y) becomes (x, y, 1)

Why Homogeneous Coordinates? Mathematicians commonly use homogeneous coordinates as they allow scaling factors to be removed from equations We will see in a moment that all of the transformations we discussed previously can be represented as 3*3 matrices Using homogeneous coordinates allows us use matrix multiplication to calculate transformations – extremely efficient!

Homogeneous Translation The translation of a point by (dx, dy) can be written in matrix form as: 1 0   0

0 1 0

dx  dy  1 

Representing the point as a homogeneous column vector we perform the calculation as: 1 0 dx x 1* x + 0* y + dx*1 x + dx 0 1 dy ×y = 0* x +1* y + dy*1 = y + dy         0 0 1  1   0* x + 0* y +1*1   1 

Remember Matrix Multiplication Recall how matrix multiplication takes place:

a b d e   g h

c   x  a * x + b * y + c * z       f  ×  y  = d * x + e * y + f * z  i   z   g * x + h * y + i * z 

Homogenous Coordinates To make operations easier, 2-D points are written as homogenous coordinate column vectors 1 0 dx x x + dx       Translation: 0 1 dy × y = y + dy : v' = T(dx, dy)v       0 0 1  1   1 

Scaling:

sx 0 0 x sx × x 0 sy 0 ×y = sy × y : v' = S(sx, sy)v       0 0 1 1   1 

Homogenous Coordinates (cont…) Rotation:

cos θ  sin θ   0

− sin θ cos θ 0

0  x  cos θ × x − sin θ × y  0 ×  y  = sin θ × x + cos θ × y  : v' = R (θ )v  1 1   1

Inverse Transformations Transformations can easily be reversed using inverse transformations 1 0 − dx  −1  T = 0 1 − dy 0 0 1 

 cosθ sinθ 0  −1  R = −sinθ cosθ 0  0 0 1

1   s 0 0 x  1  −1  0 S = 0  sy   0 0 1    

Combining Transformations A number of transformations can be combined into one matrix to make things easy – Allowed by the fact that we use homogenous coordinates

Imagine rotating a polygon around a point other than the origin – Transform to centre point to origin – Rotate around origin – Transform back to centre point

Combining Transformations (cont…) House (H )

T ( dx , dy ) H 2

1

R (θ )T ( dx , dy ) H

3

T ( − dx ,− dy ) R (θ )T ( dx , dy ) H

4

Combining Transformations (cont…) The three transformation matrices are combined as follows 1 0 − dx cosθ − sinθ 0 1 0 dx  x  0 1 − dy × sinθ cosθ 0 × 0 1 dy ×  y         0 0 1   0 0 1 0 0 1  1 

v' = T (−dx,−dy)R(θ )T (dx, dy)v

REMEMBER: Matrix multiplication is not commutative so order matters

Summary In this lecture we have taken a look at: – 2D Transformations • Translation • Scaling • Rotation

– Homogeneous coordinates – Matrix multiplications – Combining transformations

Next time we’ll start to look at how we take these abstract shapes etc and get them onscreen

Exercises 1 Translate the shape below by (7, 2) y 6 5 4

(2, 3) 3

(1, 2)

2

(3, 2)

1

(2, 1) 0

1

2

3

4

5

6

7

8

9

10

x

Exercises 2 Scale the shape below by 3 in x and 2 in y y 6 5 4

(2, 3) 3

(1, 2)

2

(3, 2)

1

(2, 1) 0

1

2

3

4

5

6

7

8

9

10

x

Exercises 3 Rotate the shape below by 30° about the origin y 6 5 4

(7, 3) 3

(6, 2)

2

(8, 2)

1

(7, 1) 0

1

2

3

4

5

6

7

8

9

10

x

Exercise 4 Write out the homogeneous matrices for the previous three transformations Translation

Scaling

Rotation

__ __ __ __ __ __   __ __ __

__ __ __ __ __ __   __ __ __

__ __ __ __ __ __   __ __ __

Exercises 5 Using matrix multiplication calculate the rotation of the shape below by 45° about its centre (5, 3) y 5

(5, 4) 4

(4, 3)

(6, 3)

3 2

(5, 2) 1

0

1

2

3

4

5

6

7

8

9

10

x

Scratch y 6 5 4 3 2 1

0

1

2

3

4

5

6

7

8

9

10

x

Equations Translation:

xnew = xold + dx

ynew = yold + dy

Scaling: xnew = Sx × xold ynew = Sy × yold Rotation xnew = xold × cosθ – yold × sinθ ynew = xold × sinθ + yold × cosθ

Shear Helpful to add one more basic transformation Equivalent to pulling faces in opposite directions

6 7

Shear Matrix Consider simple shear along x axis x’ = x + y cot θ y’ = y z’ = z

1 cot θ 0 1 H(θ) =  0 0  0 0

0 0 0 0  1 0  0 1 6 8