240 likes | 407 Views
Arbitrary Rotations in 3D. Lecture 18 Wed, Oct 8, 2003. Rotations about an Arbitrary Axis. Consider a rotation through an angle about a line through the origin. We must assign a positive direction to the line. We do this by using a vector rather than a line.
E N D
Arbitrary Rotations in 3D Lecture 18 Wed, Oct 8, 2003
Rotations about an Arbitrary Axis • Consider a rotation through an angle about a line through the origin. • We must assign a positive direction to the line. • We do this by using a vector rather than a line.
Rotations about an Arbitrary Axis • The function call glRotatef(angle, vx, vy, vz) will create a single matrix that represents a rotation about the vector v = (vx, vy, vz). • There are some clever ways of obtaining this matrix. • We will learn an elementary (non-clever) method.
Rotations about an Arbitrary Axis • To find the matrix of an rotation through an angle about a vector v emanating from the origin • Rotate about the y-axis so that v is in the xy-plane. Let this angle be and call the new vector v’. • Rotate about the z-axis so that v’ is aligned with the positive x-axis. Let this angle be –.
Rotations about an Arbitrary Axis • Rotate about the x-axis through angle . • Rotate about the z-axis through angle . • Rotate about the y-axis through angle –.
v Rotations about an Arbitrary Axis • Find the matrix of a rotation of angle about unit vector v = (vx, vy, vz).
v Rotations about an Arbitrary Axis • Rotate v about the y-axis through angle to get vector v’. • Call this matrix Ry().
v’ v’’ Rotations about an Arbitrary Axis • Rotate v’ about the z-axis through angle – to get vector v’’. • Call this matrix Rz(–).
v’’ Rotations about an Arbitrary Axis • Rotate about the x-axis through angle . • Call this matrix Rx().
Rotations about an Arbitrary Axis • Then apply Rz(-)–1 followed by Ry()–1. • The matrix of the rotation is the product Ry()–1Rz(-)–1Rx()Rz(-)Ry() • This is the same as Ry(-)Rz()Rx()Rz(-)Ry()
Example: Rotation • Find the matrix of the rotation about v = (1/3, 2/3, 2/3) through 90. • v projects to (1/3, 0, 2/3) in the xz-plane. • = tan–1(2). • cos() = 1/5, sin() = 2/5.
Example: Rotation • The matrix of this rotation is Ry() =
Example: Rotation • v rotates into the vector v’ = (5/3, 2/3, 0). • = tan–1(2/5). • cos(-) = 5/3, sin(-) = -2/3.
Example: Rotation • The matrix of this rotation is Rz(-) =
Example: Rotation • Now apply the original rotation of 90 to the x-axis. • The matrix is Rz() =
Example: Rotation • Reverse the rotation through angle . Rz() =
Example: Rotation • Reverse the rotation through angle . Ry(-) =
Example: Rotation • The product of these five matrices is the matrix of the original rotation. R() =
Example: Rotation • How can we verify that this is correct? • If P is a point on the axis of rotation, then the transformed P should be the same as P. • If v is orthogonal to the axis, then the transformed v should be orthogonal to v. • If we apply the transformation 4 times, we should get the identity.
Example: Rotation • A point on the axis is of the form (t, 2t, 2t, 1). • The matrix maps this point to (t, 2t, 2t, 1).
Example: Rotation • Compute R()2 = R()4 =
Special Properties of Rotation Matrices • Every rotation matrix has the following properties. • Each row or column dotted with itself is 1. • Each row (column) dotted with a different row (column) is 0. • A matrix with this property is called orthonormal. • Its inverse equals its transpose.
Special Properties of Rotation Matrices • Verify that R() is orthonormal. • Consider each row of the matrix to be a point. • Where does the matrix map each row? • These are the points that map to the points (1, 0, 0), (0, 1, 0), and (0, 0, 1). • What about the columns? What do they represent?