Slide 1AdminDemoTranslationsScalingSlide 6Slide 72-D RotationSlide 93-D RotationSlide 11Slide 12Slide 13Composing Canonical RotationsSlide 153-D Rotation MatricesCompositing MatricesSlide 18Rotation MatricesSlide 20Translation Matrices?Homogeneous CoordinatesSlide 23Slide 24Slide 25Slide 26Slide 27Translation MatricesSlide 29Slide 30Slide 31Transformation CommutativityMore On Homogeneous CoordsSlide 34Perspective ProjectionSlide 36Slide 37Slide 38A Perspective Projection MatrixSlide 40Slide 41Projection MatricesCS 445: Introduction to Computer GraphicsDavid LuebkeUniversity of VirginiaTransformationsAdminCall rollForums signup – do it NOW pleaseDemoAnimusicTranslationsFor convenience we usually describe objects in relation to their own coordinate systemWe can translate or move points to a new position by adding offsets to their coordinates:–Note that this translates all points uniformlyzyxtttzyxzyx'''ScalingScaling a coordinate means multiplying each of its components by a scalarUniform scaling means this scalar is the same for all components: 2ScalingNon-uniform scaling: different scalars per component:How can we represent this in matrix form?X 2,Y 0.5ScalingScaling operation:Or, in matrix form:czbyaxzyx'''zyxcbazyx000000'''scaling matrix2-D Rotation(x, y)(x’, y’)x’ = x cos () - y sin()y’ = x sin() + y cos()2-D RotationThis is easy to capture in matrix form:3-D is more complicated–Need to specify an axis of rotation–Simple cases: rotation about X, Y, Z axes yxyxcossinsincos''3-D RotationWhat does the 3-D rotation matrix look like for a rotation about the Z-axis?–Build it coordinate-by-coordinatezyxzyx1000)cos()sin(0)sin()cos('''3-D RotationWhat does the 3-D rotation matrix look like for a rotation about the Y-axis?–Build it coordinate-by-coordinatezyxzyx)cos(0)sin(010)sin(0)cos('''3-D RotationWhat does the 3-D rotation matrix look like for a rotation about the X-axis?–Build it coordinate-by-coordinatezyxzyx)cos()sin(0)sin()cos(0001'''3-D RotationGeneral rotations in 3-D require rotating about an arbitrary axis of rotationDeriving the rotation matrix for such a rotation directly is a good exercise in linear algebraAnother approach: express general rotation as composition of canonical rotations –Rotations about X, Y, ZComposing Canonical RotationsGoal: rotate about arbitrary vector A by –Idea: we know how to rotate about X,Y,ZSo, rotate about Y by until A lies in the YZ planeThen rotate about X by until A coincides with +ZThen rotate about Z by Then reverse the rotation about X (by -)Then reverse the rotation about Y (by -)Composing Canonical RotationsFirst: rotating about Y by until A lies in YZ–Draw it… How exactly do we calculate ?–Project A onto XZ plane–Find angle to X: = -(90° - ) = - 90 °Second: rotating about X by until A lies on ZHow do we calculate ?3-D Rotation MatricesSo an arbitrary rotation about A composites several canonical rotations togetherWe can express each rotation as a matrixCompositing transforms == multiplying matricesThus we can express the final rotation as the product of canonical rotation matricesThus we can express the final rotation with a single matrix!Compositing MatricesSo we have the following matrices:p: The point to be rotated about A by Ry : Rotate about Y by Rx : Rotate about X by Rz : Rotate about Z by Rx -1: Undo rotation about X by Ry-1 : Undo rotation about Y by In what order should we multiply them?Compositing MatricesRemember: the transformations, in order, are written from right to left–In other words, the first matrix to affect the vector goes next to the vector, the second next to the first, etc.–This is the rule with column vectors (OpenGL); row vectors would be the oppositeSo in our case:p’ = Ry-1 Rx -1 Rz Rx Ry pRotation MatricesNotice these two matrices:Rx : Rotate about X by Rx -1: Undo rotation about X by How can we calculate Rx -1?–Obvious answer: calculate Rx (-) –Clever answer: exploit fact that rotation matrices are orthonormal What is an orthonormal matrix?What property are we talking about?Rotation MatricesRotation matrix is orthogonal–Columns/rows linearly independent–Columns/rows sum to 1The inverse of an orthogonal matrix is just its transpose:jfciebhdajihfedcbajihfedcbaT1Translation Matrices?We can composite scale matrices just as we did rotation matricesBut how to represent translation as a matrix?Answer: with homogeneous coordinatesHomogeneous CoordinatesHomogeneous coordinates: represent coordinates in 3 dimensions with a 4-vector–[x, y, z, 0]T represents a point at infinity (use for vectors)–[0, 0, 0]T is not allowed–Note that typically w = 1 in object coordinateswzyxwzwywxzyx1///),,(Homogeneous CoordinatesHomogeneous coordinates seem unintuitive, but they make graphics operations much easierOur transformation matrices are now 4x4:10000)cos()sin(00)sin()cos(00001xRHomogeneous CoordinatesHomogeneous coordinates seem unintuitive, but they make graphics operations much easierOur transformation matrices are now 4x4:10000)cos(0)sin(00100)sin(0)cos(yRHomogeneous CoordinatesHomogeneous coordinates seem unintuitive, but they make graphics operations much easierOur transformation matrices are now
View Full Document