Coordinate Systems and Transformations Graphic Libraries Hardware dependent program Hardware independent program GL Examples: Core, GKS, PEX, OpenGL Coordinate Systems • Device Coordinate System: identifies locations on the display =>Virtual Device Coordinate System: Usually the origin is at the low left corner and u,v range from 0 to 1. Coordinate Systems • Model Coordinate System(MCS): identifies the shapes of object and it is attached to the object. Therefore the MCS moves with the object in the WCS • World Coordinate System (WCS): identifies locations of objects in the world in the application. • Viewing Coordinate System (VCS): Defined by the viewpoint and viewsite Coordinate Systems viewpoint and viewsite Coordinate Systems Projection on Screen • Parallel Projection • Perspective Projection Parallel Projection • Preserve actual dimensions and shapes of objects • Preserve parallelism • Angles preserved only on faces parallel to the projection plane • Orthographic projection is one type of parallel projection Perspective Projection • Doesn’t preserve parallelism • Doesn’t preserve actual dimensions and angles of objects, therefore shapes deformed • Popular in art (classic painting); architectural design and civil engineering. • Not commonly used in mechanical engineering Perspective Projection Coordinate scaling: Transformations between Coordinate Systems Model Transformation Viewing Transformation ProjectionTransformation Translation 2D 3D y y P2 (x2, y2) d yd P2 P1(x1, y1) o xd ⎡ x1 ⎤ ⎢ ⎥ P1 = ⎢ y1 ⎥ ⎢⎣ z1 ⎥⎦ x P1 z ⎡ x1 ⎤ ⎡ x d ⎤ ⎡ x1 + xd ⎤ P 2 = ⎢⎢ y1 ⎥⎥ + ⎢⎢ y d ⎥⎥ = ⎢⎢ y1 + yd ⎥⎥ = P1 + d ⎢⎣ z1 ⎥⎦ ⎢⎣ z d ⎥⎦ ⎢⎣ z1 + zd ⎥⎦ x Scaling 2D y 3D y P2 P2 (x 2, y2)y’) V’(x’, P1 y) P1(xV(x, 1, y1) θ x x o z ⎡x1 ⎤ ⎢ ⎥ P1 = ⎢y1 ⎥ ⎢⎣z1 ⎥⎦ ⎡sx1 ⎤ ⎢ ⎥ P 2 = ⎢sy1 ⎥ ⎢⎣sz1 ⎥⎦ P 2 = sP1 y P2 Reflection (about XOY Plane) o x P1 z ⎡ x1 ⎤ ⎢ ⎥ P1 = ⎢ y1 ⎥ ⎢⎣ z1 ⎥⎦ ⎡ x1 ⎤ ⎢ ⎥ P 2 = ⎢ y1 ⎥ ⎢⎣ −z1 ⎥⎦ ⎡1 0 0 ⎤ P 2 = ⎢⎢ 0 1 0 ⎥⎥ P1 ⎢⎣ 0 0 −1⎥⎦ Rotation about Z Axis - CCW by Ө ⎡ x1 ⎤ ⎡ r cos ϕ ⎤ P1 = ⎢⎢ y1 ⎥⎥ = ⎢⎢ r sin ϕ ⎥⎥ ⎢⎣ z1 ⎥⎦ ⎢⎣ z ⎥⎦ ⎡ x2 ⎤ ⎡ r cos (ϕ +θ ) ⎤ ⎢ ⎥ P2 = ⎢⎢ y2 ⎥⎥ = ⎢ r sin (ϕ +θ ) ⎥ ⎥⎦ ⎢⎣ z2 ⎥⎦ ⎢⎣ z ⎡ r cos ϕ cos θ − r sin ϕ sin θ ⎤ = ⎢⎢ r cos ϕ sin θ + r sin ϕ cos θ ⎥⎥ ⎢⎣ ⎥⎦ z ⎡ x1 cos θ − y1 sin θ ⎤ = ⎢⎢ x1 sin θ + y1 cos θ ⎥⎥ ⎢⎣ ⎥⎦ z1 φ z CCW y2 y y1 P2 θ z Φ o r P1 x2 x1 x P2 (x2, y2) y θ o φ P1(x1, y1) x 3-D Transformation Rotation about Z Axis - CCW by Ө x2 = x1 cos θ − y1 sin θ y2 = x1 sin θ + y1 cos θ z2 = z1 P2 (x2, y2, z2) y P1(x1, y1, z2) θ φ o x Counter Clockwise, CCW ⎡ x2 ⎤ ⎡cos θ − sin θ 0 ⎤ ⎡ x1 ⎤ ⎢ y ⎥ = ⎢sin θ ⎥⎢y ⎥ cos θ 0 ⎢ 2⎥ ⎢ ⎥ ⎢ 1⎥ ⎢⎣ z2 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ z1 ⎥⎦ Rotation about X Axis CCW by Ө z x2 = x y y2 = y1 cos θ − z1 sin θ o x z2 = y1 sin θ + z1 cos θ P2 (x2, y2, z2) z P1(x1, y1, z1) θ φ o y 0 0 ⎤ ⎡ x1 ⎤ ⎡ x2 ⎤ ⎡1 ⎢ y ⎥ = ⎢0 cos θ − sin θ ⎥ ⎢ y ⎥ ⎢ 2⎥ ⎢ ⎥ ⎢ 1⎥ ⎢⎣ z2 ⎥⎦ ⎢⎣0 sin θ cos θ ⎥⎦ ⎢⎣ z1 ⎥⎦ Rotation about Y Axis CCW by Ө ⎡ x1 ⎤ ⎡ r cos ϕ ⎤ P1 = ⎢⎢ y1 ⎥⎥ = ⎢⎢ y1 ⎥⎥ ⎢⎣ z1 ⎥⎦ ⎢⎣ r sin ϕ ⎥⎦ ⎡ x2 ⎤ ⎡ r cos (ϕ − θ ) ⎤ ⎡ r cos ϕ cos θ + r sin ϕ sin θ ⎤ ⎢ ⎥ ⎢ ⎥ = P2 = ⎢⎢ y2 ⎥⎥ = ⎢ y1 y 1 ⎥ ⎢ ⎥ ⎢⎣ z2 ⎥⎦ ⎢⎣ r sin (ϕ − θ ) ⎥⎦ ⎢⎣ r sin ϕ cos θ − r cos ϕ sin θ ⎥⎦ ⎡ x1 cos θ + z1 sin θ ⎤ ⎥ = ⎢⎢ y1 ⎥ ⎢⎣ − x1 sin θ + z1 cos θ ⎦⎥ ⎡ x2 ⎤ ⎡ cos θ 0 sin θ ⎤ ⎡ x1 ⎤ P2 = ⎢⎢ y2 ⎥⎥ = ⎢⎢ 0 1 0 ⎥⎥ ⎢⎢ y1 ⎥⎥ = R[ y ] P1 ⎢⎣ z2 ⎥⎦ ⎢⎣ − sin θ 0 cos θ ⎥⎦ ⎢⎣ z1 ⎥⎦ Z P1 P2 θ φ X Y Homogeneous Representation The representation is introduced to express all geometric transformations in the from of matrix multiplication for the convenience of manipulation. ⎡ x2 ⎤ ⎡1 0 ⎢ y ⎥ ⎢0 1 Translation ⎢ 2 ⎥ = ⎢ ⎢ z2 ⎥ ⎢0 0 ⎢ ⎥ ⎢ ⎣1 ⎦ ⎢⎣ 0 0 0 d x ⎤ ⎡ x1 ⎤ 0 d y ⎥⎥ ⎢ y1 ⎥ ⎢ ⎥ 1 d z ⎥ ⎢ z1 ⎥ ⎥⎢ ⎥ 0 1 ⎥⎦ ⎣1 ⎦ Dummy (n+1)th coordinate to facilitate multiplication Homogeneous Representations Scaling Rotation P2 = [Rz ]P1 ⎡sx ⎢0 [H ] = ⎢ ⎢0 ⎢ ⎣0 and 0 0 0⎤ s y 0 0⎥ ⎥ 0 sz 0 ⎥ ⎥ 0 0 1⎦ ⎡cos θ ⎢ sin θ [Rz ] = ⎢ ⎢ 0 ⎢ ⎣ 0 − sin θ cos θ 0 0 0 0⎤ 0 0 ⎥⎥ 1 0⎥ ⎥ 0 1⎦ Homogeneous Representations 0 ⎡1 ⎢ 0 cos θ [ Rx ] = ⎢⎢ 0 sin θ ⎢ 0 ⎣0 0 − sin θ cos θ 0 Reflection P2 = [M ]P1 and 0⎤ 0 ⎥⎥ ; 0⎥ ⎥ 1⎦ ⎡ cos θ ⎢ 0 ⎡⎣ R y ⎤⎦ = ⎢ ⎢ − sin θ ⎢ ⎣ 0 ⎡± 1 0 0 ⎢ 0 ±1 0 [M ] = ⎢ ⎢ 0 0 ±1 ⎢ ⎣0 0 0 0 sin θ 1 0 0 cos θ 0 0 0⎤ 0⎥⎥ 0⎥ ⎥ 1⎦ 0⎤ 0 ⎥⎥ 0⎥ ⎥ 1⎦ Composition of Transformation (Concatenation of Transformation) via Pre-Multiplication P2 = [ H n ][ H n −1 ]"[ H1 ]P1 An Example Consider a 3D object. The coordinates of the vertices are given as follows: A=[3, 5, 3] B=[7, 5, 3] C=[7, 5, 5] D=[3, 5, 5] E=[3, 6, 5] F=[3, 6, 3] Rotate the 3D object by 30 degree in clockwise (CW) direction at point D about the Y-axis. Step 1 [T]D-O o Step 2 [R]y-30 Step 3 [T]O-D Procedure: • First we translate ([T]D-O) the object at the refernece point D to the origin O. • Then we rotate ([ R]Y−30) about the Y-axis • Finally, we translate ([T]O-D) the point D from the origin back to its original position. [T ] D − O ⎡1 0 0 − 3 ⎤ ⎢0 1 0 − 5⎥ ⎥ = ⎢ ⎢0 0 1 − 5⎥ ⎢ ⎥ 0 0 0 1 ⎣ ⎦ [T ]O [ R]Y−30 − D ⎡cos(−30) 0 sin ( −30 ) 0 ⎤ ⎢ ⎥ 0 1 0 0 ⎥ =⎢ ⎢ − sin(−30) 0 cos(−30) 0 ⎥ ⎢ ⎥ 0 0 1 ⎥⎦ ⎢⎣ 0 ⎡1 ⎢0 = ⎢ ⎢0 ⎢ ⎣0 0 0 3⎤ 1 0 5 ⎥⎥ 0 1 5⎥ ⎥ 0 0 1⎦ [A B C D E F] ⎡3 7 7 3 3 3 ⎤ ⎢5 5 5 5 6 6 ⎥ ⎥ P1 = ⎢ ⎢3 3 5 5 5 3 ⎥ ⎢ ⎥ ⎣1 1 1 1 1 1 ⎦ The definition of the point matrix in the homogeneous representation. −30 Z P2 = [T ]O − D [ R] [T ]D −O P1 ⎡ 4.00 7.46 6.46 3.00 3.00 4.00 ⎤ ⎢5.00 5.00 5.00 5.00 6.00 6.00 ⎥ ⎥ P2 = ⎢ ⎢3.27 5.27 7.00 5.00 5.00 3.27 ⎥ ⎢ ⎥ ⎣1.00 1.00 1.00 1.00 1.00 1.00 ⎦ Mapping and Parallel Projections • Mapping involves calculating the coordinates of a point known with rispect to a CS to a new CS. About Transformations • Transformations are applied for both changing WCS in respect to MCS, but also for projections Mapping and Parallel Projections Where: Px,py,pz=x2,y2,z2 components required to translate (X2,Y2,Z2) to (X1,Y1,Z1), the following are evaluated as the translation as been performed: nx,ny,nz=x2,y2,z2 components of a unit vector along x1 ox,oy,oz=x2,y2,z2 components of a unit vector along y1 ax,ay,az=x2,y2,z2 components of a unit vector along y1 Once mapping has been performed the Z coordinate is dropped Mapping and Perspective Projections Once mapping has been performed the zv coordinate are not dropped yet and the xv, yv coordinates are scaled following the similarity rule of triangles (L,S needed). Then zv is dropped. Generating Parallel Projection Drop the n (zv) coordinate ⎡1 ⎢0 [Dn ]= ⎢⎢0 ⎢0 ⎣ 0 0 0⎤ 1 0 0⎥ ⎥, 0 0 0⎥ 0 0 1 ⎥⎦ ⎛ u⎞ ⎛u⎞ ⎜ V⎟ ⎜ V⎟ ⎜ ⎟ = [Dn ]⎜ ⎟ ⎜ 0⎟ ⎜n⎟ ⎜ ⎟ ⎜ ⎟ ⎝ 1⎠ ⎝1⎠ In summary, to project a view of an object on the UV plane, one needs to transform each point on the object by: [T ] = [ Dn ][ Rz ][ Ry ][ Rx ][ Dov ,o ] ⎛ u⎞ ⎜ V⎟ P ′ = ⎜ ⎟ = [T ]P = [T] ⎜ 0⎟ ⎜ ⎟ ⎝ 1⎠ ⎛ x⎞ ⎜ y⎟ ⎜ ⎟ ⎜ z⎟ ⎜ ⎟ ⎝ 1⎠ Note: The inverse transforms are not needed! We don't want to go back to x - y - z coordinates. Orthographic Projection Y Top Front Right X Z • Projection planes (Viewing planes) are perpendicular to the principal axes of the MCS of the model • The projection direction (viewing direction) coincides with one of the MCS axes Y Top Front Right X Geometric Transformations for Generating Orthographic Projection (Front View) ⎡1 0 0 0 ⎤ ⎢0 1 0 0 ⎥ ⎥P Pv = ⎢ ⎢0 0 0 0 ⎥ ⎢ ⎥ ⎣0 0 0 1 ⎦ Z Yv,Y Front Xv, X Drop Z Geometric Transformations for Generating Orthographic Projection (Top View) Y Top Front Yv Right Top X Xv, X Z Z 0 0 ⎡1 0 0 0 ⎤ ⎡1 ⎢ 0 1 0 0 ⎥ ⎢ 0 cos(90 ° ) − sin(90 ° ) ⎥⎢ Pv = ⎢ ⎢ 0 0 0 0 ⎥ ⎢ 0 sin ( 90 ° ) cos(90 ° ) ⎢ ⎥⎢ 0 0 ⎣ 0 0 0 1 ⎦ ⎢⎣ 0 Drop Z [ R]90 x 0⎤ ⎡1 ⎢0 0 ⎥⎥ P=⎢ ⎢0 0⎥ ⎥ ⎢ 1 ⎥⎦ ⎣0 0 0 0 0 0 0⎤ − 1 0 ⎥⎥ P 0 0⎥ ⎥ 0 1⎦ Y Top Front Yv, Y Geometric Transformations for Generating Orthographic Projection (Right View) Right Right X Z Xv sin( −90°) − 1 0⎤ 0 0 ⎥⎥ P 0 0⎥ ⎥ 0 1⎦ Z ⎡1 0 0 0 ⎤ ⎡ cos( −90°) ⎢0 1 0 0 ⎥ ⎢ 0 ⎢ ⎢ ⎥ Pv = ⎢ 0 0 0 0 ⎥ ⎢ − sin ( −90° ) ⎢ ⎥⎢ 0 ⎣ 0 0 0 1 ⎦ ⎢⎣ Drop Z 0 1 0 0 0⎤ ⎡0 0 ⎢0 1 0 0 ⎥⎥ P=⎢ ⎢0 0 cos( −90°) 0 ⎥ ⎥ ⎢ 0 1 ⎥⎦ ⎣0 0 [ R ]−y90 Rotations Needed for Generating Isometric Projection Y Yv Top Front Y Right Top Front X Right Xv Z Z 0 ⎡1 0 ⎢0 cos φ − sin φ Pv = [ R]φx [ R]θy P = ⎢ ⎢0 sin φ cos φ ⎢ 0 ⎣0 0 Zv 0 ⎤ ⎡cos θ ⎥ ⎢ 0⎥ ⎢ 0 0 ⎥ ⎢ − sin θ ⎥⎢ 1⎦⎣ 0 X 0 sin θ 0 ⎤ ⎥ 1 0 0 ⎥ P 0 cos θ 0 ⎥ ⎥ 0 0 1 ⎦ Isometric Projection: Equally foreshorten the three main axes θ = ±45°, φ = ±35.26° Other Possible Rotation Paths • Rx --> Ry rx = ±45°, ry = ±35.26° • Rz --> Ry(Rx) rz = ±45°, ry ( x ) = ±54.74° • Rx(Ry) --> Rz ry ( x ) = ±45°, rz = ANY ANGLE