3D Geometrical Transformations Foley & Van Dam, Chapter 5 3D Geometrical Transformations • 3D point representation • Translation • Scaling, reflection • Shearing • Rotations about x, y and z axis • Composition of rotations • Rotation about an arbitrary axis • Transforming planes 3D Coordinate Systems Reminder: Cross Product UxV Right-handed coordinate system: z V T y x Left-handed coordinate system: VxU y xˆ U u V 3D Point Representation • A 3D point P is represented in homogeneous coordinates by a 4-dimensional vector: P ª « « « « ¬ x y z 1 º ªD x » « » { «D y » «D z » « ¼ ¬ D yˆ u v x x zˆ y y u v sin ªu « « u « u ¬ z z T v z u z v x u x v y u y v y x v z y v x z • In homogeneous coordinates, 3D affine transformations are represented by 4x4 matrices: ª « « « « ¬ º » » » » ¼ V º » » » ¼ 3D Geometrical Transformations x º y »» z » » 1 ¼ •As for 2D points: p u v z ª « « « « ¬ nˆ U U u V x U a b c d e f g 0 h 0 i 0 t º » y » tz » » 1 ¼ x t •A point transformation is performed: ª « « « « ¬ x 'º y ' »» z '» » 1 ¼ ª « « « « ¬ a d b e c f g 0 h 0 i 0 t t º » y » tz » » 1 ¼ x ª « « « « ¬ x y z 1 º » » » » ¼ 3D Translation 3D Scaling ª « « « « ¬ P in translated to P' by: ª1 «0 « «0 « ¬0 0 1 0 0 0 1 0 0 t t º » » tz » » 1 ¼ Or: T P x y ª « « « « ¬ x y z 1 ª « « « « ¬ º » » » » ¼ x 'º y ' »» z '» » 1 ¼ ª x t « y t « « z t « 1 ¬ P ' 1 y z º » » » » ¼ P ' 0 0 0 0 0 b 0 0 0 c 0 y 0 0 1 0 0 0 0 0 º » » » » 1 ¼ x y z º » » » » 1 ¼ x 'º y ' »» z '» » 1 ¼ ª « « « « ¬ ax º » » » » ¼ by cz 1 P ' y x y x 1 P ' P 3D Shearing • Shearing: ª « « « « ¬ x º y »» z » » 1 ¼ •Reflections through the xz and the yz planes are defined similarly ª1 «c « «e « ¬0 a b 1 f d 1 0 0 0 º 0 »» 0 » » 1 ¼ ª « « « « ¬ x º y »» z » » 1 ¼ ª x ay bz « cx y dz « « ex fy z « 1 ¬ º » » » » ¼ • Change in each coordinate is a linear combination of all three • Transforms a cube into a general parallelepiped 3D Rotation 3D Rotation • To generate a rotation in 3D we have to specify: – axis of rotation (2 d.o.f.) – amount of rotation (1 d.o.f.) • Counterclockwise rotation about x-axis ª « « « « ¬ x 'º y ' »» z '» » 1 ¼ ª1 «0 « «0 « ¬0 0 cos T sin T 0 •Note, the axis passes through the origin p ' y x ª « « « « ¬ S P S ª « « « « ¬ x º y »» z » » 1 ¼ z P • A reflection through the xy plane: 0 1 0 ª « « « « ¬ z 3D Reflection ª1 «0 « «0 « ¬0 0 º 0 »» 0 » » 1 ¼ Or z x Inverse: T x a 0 sin T cos T 0 R x 0 0 0 1 º » » » » ¼ (T ) p z z x y ª « « « « ¬ x y z 1 º » » » » ¼ 3D Rotation 3D Rotation • Counterclockwise rotation about y-axis ª « « « « ¬ x 'º y ' »» z '» » 1 ¼ ª cos T « 0 « « sin T « 0 ¬ 0 1 0 0 sin T 0 cos T 0 p ' R y 0 0 0 1 º » » » » ¼ ª « « « « ¬ x y z 1 º » » » » ¼ • Counterclockwise rotation about z-axis ª « « «¬ x 'º y '» z '» 1 »¼ ª cos ș « sin ș 0 « 0 «¬ p ' (T ) p sin ș cos ș 0 0 R y º » » »¼ ª « « «¬ x y z 1 º » » »¼ (T ) p y x Composite Rotation Change of Coordinates • Rx, Ry, and Rz, can perform any rotation about an axis passing through the origin •Inverse rotation: p 0 0 0 1 z z x z 0 0 1 0 R 1 (T ) p ' R ( T ) p ' R T (T ) • Problem: Given the XYZ orthonormal coordinate system, find a transformation M, that maps a representation in XYZ into a representation in the orthonormal system UVW, with the same origin •The matrix M transforms the UVW vectors to the z XYZ vectors u=(ux,uy,uz) y x v=(vx,vy,vz) Change of Coordinates Change of Coordinates • Solution: M is rotation matrix whose rows are U,V, and W: ª « « « « ¬ M u x vx w x 0 u u y v y w y 0 0 º 0 »» 0 » » 1 ¼ z vz w z 0 MU • Note: the inverse transformation is the transpose: M 1 M T ªu x «u y « «u z ¬« 0 v x v y v z 0 w w w 0 x y z • Let's check the transformation of U under M: 0 0 0 1 º » » » ¼» ª « « « «¬ u x v x w x 0 ªu « « « ¬ u y v y w y 0 2 x u z v z w z 0 u 2y u 0 0 1 2 z º » » » ¼ 0 0 0 1 º » » » »¼ ªu x «u y « «u z «¬ 1 ª1 «0 «0 «¬ 1 º » » »¼ º » » » »¼ X • Similarly, V goes into Y, and W goes into Z Change of Coordinates Rotation About an Arbitrary Axis • Let's check the transformation of the X axis under M-1: M 1 ª1 «0 «0 ¬« 1 ªu x «u y « «u z ¬« 0 º » » ¼» v x v y v z 0 w w w 0 0 0 0 1 x y z º » » » ¼» ª1 «0 «0 ¬« 1 ªu x «u y « «u z ¬« 1 º » » ¼» º » » » ¼» U • Axis of rotation can be located at any point: 6 d.o.f. (we must specify 2 points p1 and p2) • The idea: make the axis coincident with one of the coordinate axes (z axis), rotate by T, and then transform back z p2 p1 • Similarly, Y goes into V, and Z goes into W y x Rotation About an Arbitrary Axis y z step 3 y p2 p1 p1 p2 Initial Position y p1 step 1 zTranslate p 1 x p2 z y x p1 p2 x z Rotate p2 onto the z Axis Translate to the Original Position Rotation About Arbitrary Axis • Constructing an orthonormal system along the rotation axis: – A vector W parallel to the rotation axis: s p p 1; 2 s s w – A vector V perpendicular to W: a § 0 · ¨ ¸ w u ¨ 0 ¸ ¨ 1 ¸ © ¹ ; v T • Step 2: M • Step 3: • Step 4: a a • Step 5: v u w 1 § ¨ ¨ ¨ ¨ © u x u y u z 0 § ¨ ¨ ¨ ¨ © 1 0 0 0 • Composition: P c x y z 1 u y v y w y 0 u z v z w z 0 T 1 1 · ¸ ¸ ¸ ¸ ¹ 0 0 0 1 sin ș cos ș 0 0 v x v y v z 0 0 1 0 0 1 w w w 0 0 0 1 0 1 z x 1 y 1 z1 1 0 0 0 1 · ¸ ¸ ¸ ¹ · ¸ ¸ ¸ ¸ ¹ · ¸ ¸ ¸ ¸ ¹ 1 M 0 0 1 0 0 0 0 1 x y · ¸ ¸ ¸ ¸ ¹ R M T P Transforming Planes • Plane representation: – By three non-collinear points – By implicit equation: >A A x B y C z D ªA «D ¬ B D C D B C P0 D º 1» ¼ P1 – A vector U forming a right-handed orthogonal system with W and V: u 0 0 1 0 § cos ș ¨ sin ș ¨ 0 ¨ 0 © 1 T 0 1 0 0 § u x ¨ ¨ v x ¨ w x ¨ 0 © R M 1 0 0 0 § ¨ ¨ ¨ ¨ © y step 5 p1 z p2 p2 original Orientation y step 2 p1 x z Rotate the Axis to the x to the Origin • Step1: x Rotate the Object Around the z Axis step 4 Rotation About an Arbitrary Axis >x P2 y z 1@ @ ª « « « « ¬ x º y »» z » » 1 ¼ 0 Transforming Planes Transforming Planes • One way to transform a plane is by transforming any three non-collinear points on the plane • Note that: >A B C D • Another way is to transform the plane equation: Given a transformation T such that >A ' B ' C ' D '@ ª « « « « ¬ x 'º y ' »» z '» » 1 ¼ x y z 1 º » » » » ¼ 0 • Thus, the transformation that we should apply to the plane equation is: T [x, y, z, 1] = [x', y', z', 1] find [A',B',C',D'], such that: @ ª « T 1T « « « ¬ 0 > Ac Bc C c D c@ >A B C D @ T 1