Computer Graphics: 3D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011
Extending From 2d Approach Methods for geometric transformations in three dimensions are extended from two-dimensional methods by including considerations for the z coordinate. A three-dimensional position, expressed in homogeneous coordinates, is represented as a four-element column vector. Thus , each geometric transformation operator is now 4 by 4 matrix.
Translation
Rotation: z-axis rotation 3D Coordinate-Axis Rotations z-axis rotation (counter-clockwise)
Rotation: x-axis rotation counter-clockwise
Rotation: y-axis rotation counter-clockwise
Scaling Change the coordinates of the object by scaling factors. y x z
Scaling with respect to a Fixed Point Translate to origin, scale, translate back y x y y y x x x z z z z Translate Scale Translate back
Scaling with respect to a Fixed Point
Reflection Reflection over planes, lines or points y y y y x x x x z z
Shear Deform the shape depending on another dimension
Advanced Topics
1. Rotating about an axis that is parallel to one of the coordinates axes Translate the object so that the rotation axis coincides with the parallel coordinate axis Perform the specified rotation about that axis Translate the object so that rotation axis is moved back to its original A coordinate position P is transformed with the sequence
Rotation Around a Parallel Axis Rotating the object around a line parallel to one of the axes: Translate to axis, rotate, translate back. y y y y x x x x z z z z Translate Rotate Translate back
2. Rotation Around an Arbitrary Axis In this case, we also need rotation to align the rotation axis with a selected coordinate axis and then to bring the rotation axis back to its original orientation A rotation axis can be defined with two coordinate position, or one position and direction angles. Now we assume that the rotation axis is defined by two points, and that the direction of rotation is to be counter clockwise when looking along the axis from p2 to p1.
Rotation Around an Arbitrary Axis Translate the object so that the rotation axis passes though the origin Rotate the object so that the rotation axis is aligned with one of the coordinate axes Make the specified rotation Reverse the axis rotation Translate back x z
Rotation Around an Arbitrary Axis
Rotation Around an Arbitrary Axis u is the unit vector along V: First step: Translate P1 to origin: Next step: Align u with the z axis we need two rotations: rotate around x axis to get u onto the xz plane, rotate around y axis to get u aligned with z axis.
Rotation Around an Arbitrary Axis Align u with the z axis 1) rotate around x axis to get u into the xz plane, 2) rotate around y axis to get u aligned with the z axis y y y u u u' α α x x x u uz β z z z
Dot product and Cross Product v dot u = vx * ux + vy * uy + vz * uz. That equals also to |v|*|u|*cos(a) if a is the angle between v and u vectors. Dot product is zero if vectors are perpendicular. v x u is a vector that is perpendicular to both vectors you multiply. Its length is |v|*|u|*sin(a), that is an area of parallelogram built on them. If v and u are parallel then the product is the null vector.
Rotation Around an Arbitrary Axis Align u with the z axis 1) rotate around x axis to get u into the xz plane, 2) rotate around y axis to get u aligned with the z axis We need cosine and sine of α for rotation u u' α x uz z Projection of u on yz plane
Rotation Around an Arbitrary Axis Align u with the z axis 1) rotate around x axis to get u into the xz plane, 2) rotate around y axis to get u aligned with the z axis u β x u''= (a,0,d) z