CS 536 Computer Graphics
Transformations Week 9, Lecture 18
David Breen, William Regli and Maxim Peysakhov Department of Computer Science Drexel University
1 2D Transformations
3 2D Affine Transformations
All represented as matrix operations on vectors! Parallel lines preserved, angles/lengths not
• Scale • Rotate • Translate • Reflect • Shear
4 Pics/Math courtesy of Dave Mount @ UMD-CP 2D Affine Transformations
• Example 1: rotation and non uniform scale on unit cube • Example 2: shear first in x, then in y
Note: – Preserves parallels – Does not preserve lengths and angles 5
1994 Foley/VanDam/Finer/Huges/Phillips ICG 2D Transforms: Translation
• Rigid motion of points to new locations
• Defined with column vectors:
as 6
1994 Foley/VanDam/Finer/Huges/Phillips ICG 2D Transforms: Scale
• Stretching of points along axes:
In matrix form:
or just: 7
1994 Foley/VanDam/Finer/Huges/Phillips ICG 2D Transforms: Rotation
• Rotation of points about the origin
Positive Angle: CCW Negative Angle: CW
Matrix form: or just: 8 1994 Foley/VanDam/Finer/Huges/Phillips ICG 2D Transforms: Rotation
• Substitute the 1st two equations into the 2nd two to get the general equation
rcos(θ + φ) rcos(φ)
x'= x cos(θ) − y sin(θ)
y'= x sin(θ) + y cos(θ) 9 1994 Foley/VanDam/Finer/Huges/Phillips ICG
• Observe: translation is treated differently from scaling and rotation • Homogeneous coordinates: allows all transformations to be Example: A 2D point (x,y) is the line (x,y,w), where w is any real #, in 3D treated as matrix homogenous coordinates. multiplications To get the point, homogenize by dividing by w (i.e. w=1) 10
1994 Foley/VanDam/Finer/Huges/Phillips ICG Recall our Affine Transformations
11 Pics/Math courtesy of Dave Mount @ UMD-CP Matrix Representation of 2D Affine Transformations
• Translation:
• Scale:
• Rotation:
• Shear: Reflection: Fy=
12 Composition of 2D Transforms
• Rotate about a point P1 – Translate P1 to origin – Rotate – Translate back to P1
P’ = T ✴ P T
13
1994 Foley/VanDam/Finer/Huges/Phillips ICG Composition of 2D Transforms
• Scale object around point P1 – P1 to origin – Scale – Translate back to P1 – Compose into T
P’ = T ✴ P 14
1994 Foley/VanDam/Finer/Huges/Phillips ICG Composition of 2D Transforms
• Scale + rotate object around point P1 and P’ = T ✴ P move to P2 – P1 to origin – Scale – Rotate – Translate to P2
15
1994 Foley/VanDam/Finer/Huges/Phillips ICG Composition of 2D Transforms
• Be sure to multiple transformations in proper order!
P’ = (T✴(R✴(S✴ (T✴ P))))
P’ = ((T✴ (R✴ (S ✴ T)))✴ P)
P’ = T ✴ P
16 The Window-to-Viewport Transformation • Problem: Screen windows cannot display the whole world (window management) • How to transform and clip: Objects to Windows to Screen
18
Pics/Math courtesy of Dave Mount @ UMD-CP Window-to-Viewport Transformation • Given a window Three steps: and a viewport, • Translate what is the • Scale transformation from • Translate WCS to VPCS?
19
1994 Foley/VanDam/Finer/Huges/Phillips ICG Transforming World Coordinates to Viewports • 3 steps 1. Translate 2. Scale 3. Translate
Overall Transformation:
P'= MwvP 20
1994 Foley/VanDam/Finer/Huges/Phillips ICG
€ 3D Transformations
24 Representation of 3D Transformations • Z axis represents depth • Right Handed System – When looking “down” at the origin, positive rotation is CCW
• Left Handed System – When looking “down”, positive rotation is in CW – More natural interpretation for displays, big z means “far” (into screen) 25
1994 Foley/VanDam/Finer/Huges/Phillips ICG 3D Homogenous Coordinates
• Homogenous coordinates for 2D space requires 3D vectors & matrices • Homogenous coordinates for 3D space requires 4D vectors & matrices • [x,y,z,w]
26 3D Transformations: Scale
• Scale – Parameters for each axis direction
27 3D Transformations: Translate
• Translation
28 3D Transformations: Rotation • One rotation for each world coordinate axis
29 Rotation Around an Arbitrary Axis
• Rotate a point P around axis n (x,y,z) by angle θ # tx 2 + c txy + sz txz − sy 0& % ( txy − sz ty 2 + c tyz + sx 0 R = % ( %txz + sy tyz − sx tz2 + c 0( % ( $ 0 0 0 1' • c = cos(θ) • s = sin(θ) € • t = (1 - c) Graphics Gems I, p. 466 & 498 30 Rotation Around an Arbitrary Axis
• Also can be expressed as the Rodrigues Formula
Prot = P cos(ϑ ) + (n × P)sin(ϑ ) + n(n⋅ P)(1− cos(ϑ ))
€ 31 Improved Rotations
• Euler Angles have problems – How to interpolate keyframes? – Angles aren’t independent – Interpolation can create Gimble Lock, i.e. loss of a degree of freedom when axes align • Solution: Quaternions!
32 33 34 p = (0,x )
€
35 36 37 A & B are quaternions
slerp – Spherical linear interpolation Need to take equals steps on the sphere 38 What about interpolating multiple keyframes?
• Shoemake suggests using Bezier curves on the sphere • Offers a variation of the De Casteljau algorithm using slerp and quaternion control points • See K. Shoemake, “Animating rotation with quaternion curves”, Proc. SIGGRAPH ’85 39 3D Transformations: Reflect • Reflection:
about x-y plane
" −1 0 0 0 % $ ' 0 1 0 0 about y-z plane F = $ ' x $ 0 0 1 0 ' $ ' # 0 0 0 1 & 40 Reflection corresponds to negative scale factors
sx = -1 sy = 1 original
sx = -1 sy = -1 sx = 1 sy = -1
E. Angel and D. Shreiner: Interactive Computer Graphics 6E © Addison-Wesley 2012 3D Transformations: Shear
! 1 sh 0 0 $ # x & • Shear: # 0 1 0 0 & H x = (function of y) # 0 0 1 0 & # & " 0 0 0 1 %
x' = x +shx ⋅ y
43 3D Transformations: Shear " y z % " X'% 1 Shx Shx 0 " X% $ ' $ ' $ ' Y' Sh x 1 Sh z 0 Y $ ' = $ y y ' ∗$ ' $ x y ' $ Z'' Shz Shz 1 0 $ Z' $ ' $ ' $ ' # 1 & # 0 0 0 1& # 1 & y z X ' = X + ShxY + Shx Z x z Y ' = Shy X +Y + Shy Z € x y Z ' = Shz X + Shz Y + Z 45 Example: Composition of 3D Transformations
• Goal: Transform P1P2 and P1P3
46
1994 Foley/VanDam/Finer/Huges/Phillips ICG Example (Cont.)
(1) • Process
1. Translate P1 to (0,0,0) 2. Rotate about y 3. Rotate about x 4. Rotate about z (2-3)
(4)
47
1994 Foley/VanDam/Finer/Huges/Phillips ICG Final Result • What we’ve really done is transform the local coordinate
system Rx, Ry, Rz to align with the origin x,y,z
48
1994 Foley/VanDam/Finer/Huges/Phillips ICG Example 2: Composition of 3D Transformations • Airplane defined in x,y,z • Problem: want to point it in Dir of Flight (DOF) centered at point P • Note: DOF is a vector • Process: – Rotate plane – Move to P
49
1994 Foley/VanDam/Finer/Huges/Phillips ICG Example 2 (cont.)
• Zp axis to be DOF
• Xp axis to be a horizontal vector perpendicular to DOF – y x DOF
• Yp, vector perpendicular to both Zp and Xp (i.e.Zp x Xp)
50
1994 Foley/VanDam/Finer/Huges/Phillips ICG Transformations to Change Coordinate Systems • Issue: the world has many different relative frames of reference • How do we transform among them? • Example: CAD Assemblies & Animation Models
51 Transformations to Change Coordinate Systems • 4 coordinate systems 1 point P
M1←2 = T (4,2)
M 2←3 = T (2,3) • S(0.5,0.5) M 3←4 = T (6.7,1.8) • R(45 )
52
1994 Foley/VanDam/Finer/Huges/Phillips ICG Coordinate System Example (1)
• Translate the House to the origin
M1←2 = T(x1,y1) −1 M2←1 = (M1←2 )
= T(−x1,−y1) P1
The matrix Mij that maps points from coordinate system j
€ to i is the inverse of the matrix Mji that maps points from coordinate system j to coordinate system i. 53 1994 Foley/VanDam/Finer/Huges/Phillips ICG Coordinate System Example (2) • Transformation M = M • M • M • M Composition: 5←1 5←4 4←3 3←2 2←1
€
54
1994 Foley/VanDam/Finer/Huges/Phillips ICG World Coordinates and Local Coordinates • To move the tricycle, we need to know how all of its parts relate to the WCS • Example: front wheel rotates on the ground wrt the front wheel’s z (wo) (wh ) axis: P = T(αr,0,0)⋅ Rz (α)⋅ P Coordinates of P in wheel coordinate system: (wh) (wh ) P' = Rz (α)⋅ P 55 € 1994 Foley/VanDam/Finer/Huges/Phillips ICG
€ Properties of Transformation Matrices • Note that matrix multiplication is not commutative
• i.e. in general M1M2 ≠ M2M1
• T – reflection around y axis • T’ – rotation in the plane