3D Coordinate Systems 3D Transformation o 3D computer graphics involves the additional dimension of o The translation, scaling and rotation transformations used for 2D depth, allowing more realistic representations of 3D objects can be extended to three dimensions in the real world o In 3D, each transformation is represented by a 4x4 matrix o There are two possible ways of “attaching” the Z-axis, which o Using homogeneous coordinates it is possible to represent each gives rise to a left-handed or a right-handed system type of transformation in a matrix form and integrate transformations into one matrix
o To apply transformations, simply multiply matrices, also easier in hardware and software implementation
o Homogeneous coordinates can represent directions
o Homogeneous coordinates also allow for non-affine transformations, e.g., perspective projection
Homogeneous Coordinates Basic 2D Transformations
o In 2D, use three numbers to represent a point o Translation: 1 0 b x 0 1 b y o (x,y) = (wx,wy,w) for any constant w≠0 0 0 1 o To go backwards, divide by w, (x,y) becomes (x,y,1) sx 0 0 o Scaling: 0 s 0 y o Transformation can now be done with matrix multiplication 0 0 1 x′ a a b x xx xy x cosθ − sinθ 0 y′ = a a b y sinθ cosθ 0 yx yy y o Rotation: 0 0 1 1 0 0 1 1
1 Translation and Scalling Matrice Translation o The translation and scaling transformations may be represented in 3D as follows:
1 0 0 trX Translation 0 1 0 trY original matrix 0 0 1 trZ 0 0 0 1
S 0 0 0 Scaling X matrix 0 SY 00 0 0 SZ 0 0 0 0 1 V=(ai + bj +ck) == (a, b, c) translation along y, or V = (0, k, 0)
Scaling 3D Shearing
Shearing:
The change in each coordinate is a linear combination of all three
Transforms a cube into a general parallelepiped Original scale all axes scale Y axis offset from origin x′ 1 a b 0x x′ a 0 0 0x y′ c 1 d 0y y′ 0 b 0 0y = = z′ e f 1 0z z′ 0 0 c 0z 1 0 0 0 11 1 0 0 0 11
2 Rotation Major Axis Rotation Matrices
o In 2D, rotation is about a point 1 0 0 0 0 cosθ − sinθ 0 o about X axis R = o In 3D, rotation is about a vector, which can be done through x 0 sinθ cosθ 0 rotations about x, y or z axes 0 0 0 1 cosθ 0 sinθ 0 Rotations are o Positive rotations are anti-clockwise, negative rotations are o about Y axis orthogonal matrices, 0 1 0 0 clockwise, when looking down a positive axis towards the R = preserving distances and y − θ θ origin sin 0 cos 0 angles. 0 0 0 1 y y y o about Z axis cosθ − sinθ 0 0 sinθ cosθ 0 0 x x = x R z 0 0 1 0 0 0 0 1 z z z
Rotation Rotation Axis
o In general rotation vector does not pass through origin
rotation of 45o about the Z axis
offset from origin translation then rotate about Z axis
3 Rotation about an Arbitrary Axis Rotation about an Arbitrary Axis
o Rotation about an Arbitrary Axis o Step 1. Translation
y BasicBasic IdeaIdea y
1. Translate (x1, y1, z1) to the origin TT 1. Translate (x1, y1, z1) to the origin (x2,y2,z2) (x2,y2,z2) 1 0 0 − x 2.2. Rotate Rotate (x’ (x’2, ,y’ y’2, ,z’ z’2) )on on to to the the z z axis axis 1 R 2 2 2 R 3. Rotate the object around the z-axis 0 1 0 − y 3. Rotate the object around the z-axis T = 1 TR 4. Rotate the axis to the original 1 1 1 − (x1,y1,z1) 4. Rotate the axis to the original (x ,y ,z ) 0 0 1 z1 orientation -1 orientation 0 0 0 1 x RR-1 x 5.5. Translate Translate the the rotation rotation axis axis to to the the
z -1 originaloriginal position position z TT-1
−1 −1 −1 [T ] = [T ] [T (α )] [T ()φ ] [T ()θ ][T ()φ ][T (α )][T ] Rarb TR Rx Ry Rz Ry Rx TR
Rotation about an Arbitrary Axis Rotation about an Arbitrary Axis
o Step 2. Establish o Step 3. Rotate about y axis by φ [T α ] Rx ( ) y b b y a d sin α = = sin φ = , cosφ = b2 + c2 d l l l 2 = a2 + b2 + c2 = a 2 + d 2 (0,b,c) α = c = c (a,b,c) cos (a,b,c) b2 + c2 d d = b2 + c2
Projected α Projected l φ − φ − Point α 1 0 0 0 1 0 0 0 Point cos 0 sin 0 d / l 0 a / l 0 0 cosα − sinα 0 0 c / d − b / d 0 d 0 1 0 0 0 1 0 0 x []= = φ x []= = TR (α ) T ()φ x 0 sinα cosα 0 0 b / d c / d 0 Ry φ φ (a,0,d) sin 0 cos 0 a / l 0 d / l 0 z 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 Rotated Rotated Point z Point
4 Rotation about an Arbitrary Axis Rotation about an Arbitrary Axis o Step 4. Rotate about z axis by the desired angle θ o Step 5. Apply the reverse transformation to place the axis back in its initial position y y 1 0 0 x1 1 0 0 0 α α −1 −1 −1 0 1 0 y1 0 cos sin 0 [T ] [T ()α ] [T ()φ ] = TR Rx Ry − α α cosθ − sinθ 0 0 0 0 1 z1 0 sin cos 0 l sinθ cosθ 0 0 0 0 0 1 0 0 0 1 []T ()θ = φ φ Rz cos 0 sin 0 0 0 1 0 l 0 1 0 0 x l θ 0 0 0 1 x − sinφ 0 cosφ 0 0 0 0 1
z z −1 −1 −1 [T ] = [T ] [T (α )] [T ()φ ] [T ()θ ][T ()φ ][T (α )][T ] Rarb TR Rx Ry Rz Ry Rx TR
Rotation about an Arbitrary Axis Rotation about an Arbitrary Axis
o Step1. Translate point A (2,1,0) to the origin Find the new coordinates of a unit cube 90º-rotated about an axis defined by its endpoints A(2,1,0) and B(3,3,1).
y 1 0 0 − 2 B’(1,2,1) 0 1 0 −1 [T ] = TR 0 0 1 0 A’(0,0,0) x 0 0 0 1 z
5 Rotation about an Arbitrary Axis Rotation about an Arbitrary Axis o Step 2. Rotate axis A’B’ about the x axis by and angle α, until it lies o Step 3. Rotate axis A’B’’ about the y axis by and angle φ, on the xz plane. until it coincides with the z axis.
α = 2 = 2 = 2 5 sin φ = 1 = 6 22 +12 5 5 sin y 6 6 1 5 cos α = = 5 30 y 5 5 cos φ = = 6 6 Projected point (0,2,1) B’(1,2,1) = 2 + 2 + 2 = l 1 2 1 6 l 30 − 6 α l φ x 0 0 1 0 0 0 (0,0,√6) 6 6 x 5 2 5 √ []= 0 1 0 0 − B”(1,0, 5) TR ()φ 0 0 y 6 30 z √ []= 5 5 0 0 B”(1,0, 5) TR ()α x 2 5 5 z 6 6 0 0 0 0 0 1 5 5 0 0 0 1
Rotation about an Arbitrary Axis Rotation about an Arbitrary Axis ° o Step 4. Rotate the cube 90 about the z axis 1 0 0 0 30 6 − 1 0 0 2 5 2 5 0 00 1 0 0 0 0 6 6 − 0 1 0 1 1 0 0 0 0 1 0 0 [T ] = 5 5 0 1 0 0 Rarb 0 0 1 0 2 5 5 6 30 0 0 1 0 0 − 0− 0 0 1 0 0 0 0 0 0 1 5 5 6 6 0 0 0 1 []T ()° = 0 0 0 1 0 0 0 1 Rz 90 0 0 1 0 1 0 0 0 30 − 6 − 0 0 5 2 5 1 0 0 2 0 0 0 1 6 6 0 − 0 0 1 0 −1 0 1 0 0 5 5 6 30 2 5 5 0 0 1 0 0 00 0 Finally, the concatenated rotation matrix about the arbitrary axis AB becomes, 6 6 5 5 0 0 0 1 0 0 0 10 0 0 1 − − − 1 1 1 0.166 − 0.075 0.983 1.742 [T ] = [T ] [T ()α ] [T ()φ ] [T ][T ()φ ][T ()α ][T ] Rarb TR Rx Ry R ()90o Ry Rx TR z 0.742 0.667 0.075 −1.151 = − 0.650 0.741 0.167 0.560 0 0 0 1
6 Rotation about an Arbitrary Axis Rotation about an Arbitrary Axis o Multiplying [TR]AB by the point matrix of the original cube o Reflection Relative to the xy Plane
x' 1 0 0 0 x * y y [P ]=[T ]⋅[]P y' 0 1 0 0 y Rarb = z z' 0 0 − 1 0 z 1 0 0 0 1 1 0.166 − 0.075 0.983 1.742 0 0 1 1 0 0 1 1 z x x 0.742 0.667 0.075 −1.1511 1 1 1 0 0 0 0 []P* = o Z-axis Shear − 0.650 0.741 0.167 0.560 1 0 0 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 x' 1 0 a 0 x 2.650 1.667 1.834 2.816 2.725 1.742 1.909 2.891 y' 0 1 b 0 y = − 0.558 − 0.484 0.258 0.184 −1.225 −1.151 − 0.409 − 0.483 = z' 0 0 1 0 z 1.467 1.301 0.650 0.817 0.726 0.560 − 0.091 0.076 1 0 0 0 11 1 1 1 1 1 1 1 1
Q1 - Translate by <1, 1, 1> Q2- Rotate by 45 degrees about x axis
o A translation by an offset (tx, ty, tz) is achieved o So to rotate by 45 degrees about the x-axis, we using the following matrix: use the following matrix: 1 0 0 0 1 0 0 tx 1 0 0 0 1 − 1 0 1 0 t o So to translate by a vector 0 0 = y 0 cos 45 − sin 45 0 2 2 M T (tx ,ty ,tz ) (1, 1, 1), the matrix is simply: R (45) = = 0 0 1 t x 1 1 z 0 sin 45 cos 45 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 2 2 0 0 0 1 0 1 0 1 M (1,1,1) = T 0 0 1 1 0 0 0 1
7 Q3 - Rotate by 45 about axis <1, 1, 1> Q3 - Arbitrary Axis Rotation o So a rotation by 45 degrees about <1, 1, 1> can o The composite transformation can then be be achieved by a few succesive rotations about obtained as follows: the major axes. Which can be represented as a M (1,1,1) = R −1 (α) • R −1 (β ) • R (θ )• R (β )• R (α) single composite transformation R y x z x y
− − − = 2 + 2 = = cos( 45) 0 sin( 45) 0 1 0 0 0 cos(45) sin(45) 0 0 d n n 2 1.414 0 1 0 0 0 cos(−35.2) −sin(−35.2) 0 sin(45) cos(45) 0 0 x z n = 1 = −sin(−45) 0 cos(−45) 0 0 sin(−35.2) cos(−35.2) 0 0 0 1 0 x n β = −1 y = −1 1 = 0 0 0 1 0 0 0 1 0 0 0 1 n = 1 SO tan tan 35.264 y d 2 1 0 0 0 cos( 45) 0 sin(45) 0 0 cos( 35.2) − sin(35.2) 0 −1 n −1 1 0 1 0 0 x nz = 1 α = x = = ?? tan tan 45 0 sin(35.2) cos( 35.2) 0− sin(45) 0 cos( 45) 0 y n z 1 0 0 0 1 0 0 0 1 z
Directions vs. Points Homogeneous Directions o We have looked at transforming points o Translation does not affect directions! o Directions are also important in graphics o Homogeneous coordinates give us a clear way of handling o Viewing directions this, e.g., direction (x,y) becomes homogeneous direction o Normal vectors (x,y,0), and remains the same after translation: o Ray directions (1,1) (-2,-1) 1 0 bx x x 0 1 b y = y o Directions are represented by vectors, like points, and can y be transformed, but not like points 0 0 1 0 0 o Say we define a direction as the difference of two points: d=a–b. This represents the direction of the line between two o (x, y, 0) is a vector, (x,y,1) is a point. points o The same applies to rotation and scaling, e.g., scaling o Now we translate the points by the same amount: changes the length of vector, but not direction a’=a+t, b’=b+t o Normal vectors are slightly different though (can’t always o Have we transformed d? use the matrix for points to transform the normal vector)
8 Alternative Rotations OpenGL Transformations o Specify the rotation axis and the angle (OpenGL method) o OpenGL internally stores two matrices that control viewing o Euler angles: Specify how much to rotate about X, then how of the scene much about Y, then how much about o The GL_MODELVIEW matrix for modelling and world to view o These are hard to think about, and hard to compose transformations oQuaternions o The GL_PROJECTION matrix captures the view to canonical o 4-vector related to axis and angle, unit magnitude, e.g., conversion rotation about axis (nx,ny,nz) by angle θ: o Mapping from canonical view volume into window space is through a glViewport function call (n cos()θ / 2 ,n cos ()θ / 2 ,n cos ()()θ / 2 ,sin θ / 2 ) x y z o Matrix calls, such as glRotate, glTranslate, glScale right multiply the transformation matrix M with the current matrix o Only normalized quaternions represent rotations, but you can C (e.g., identity matrix initially), resulting in CM - the last one normalize them just like vectors, so it isn’t a problem is the first applied o But we don’t want to learn all the maths about quaternions in this module, because we have to learn how to create a basic application before trying to make rotation faster
9