440 likes | 755 Views
Computer Graphics. Recitation 2. The plan today. Learn about rotations in 2D and 3D. Representing rotations by quaternions. Rotation in 2D. Rotation about the origin by angle . . O. Positive angle means counter-clockwise direction. Rotation in 2D.
E N D
Computer Graphics Recitation 2
The plan today • Learn about rotations in 2D and 3D. • Representing rotations by quaternions.
Rotation in 2D • Rotation about the origin by angle . O Positive angle means counter-clockwise direction.
Rotation in 2D • Rotation about the origin by angle . O Positive angle means counter-clockwise direction.
Rotation in 2D – matrix representation • Multiply (x, y) by the rotation matrix: P’ = R (P) P (x, y) O
Interpolating rotations in 2D • We want to generate N intermediate positions: O
Interpolating rotations in 2D • Divide the arc into N pieces of equal length O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N O
Rotations mathematically • Rotation is a linear orthogonal transformation that doesn’t change the orientation. • It means: • Let v, u be vectors (or points), R the rotation • <Ru, Rv> = <u, v> (length and angle preservation) • => ||Ru|| = ||u|| • In matrix representation: let R be n n matrix: • RRT = I => R-1 = RT • det(R) = +1 • The rows of R are orthonormal vectors (unit-length pairwise orthogonal vectors). They form a “right-hand” basis of Rn.
2D rotations as complex numbers multiplication • Represent points (x, y) as (x + iy) in C. • Multiplying by ei is equivalent to rotation by angle : ei = cos + i sin ei (x + iy) = (cos + i sin) (x + iy) = (xcosysin) + i (xsin + ycos) Im P’ = ei(x + iy) P = x + iy O Re
Rotations in 3D • Euler’s theorem: any orientation can be obtained from a fixed reference orientation by a single unique rotation around an appropriate axis in space.
Rotations in 3D • We express the rotation in terms of the rotation axis n = (nx, ny, nz), ||n|| = 1, and the rotation angle . n P O
Rotations in 3D • We express the rotation in terms of the rotation axis n = (nx, ny, nz), ||n|| = 1, and the rotation angle . P’ n P O
The formula for P’ • Decompose v into to components: v = v|| + v • v|| = <v, n> n => v|| || n • v = v – v|| => v n n P v|| v v O
The formula for P’ • The rotation doesn’t affect the axis of rotation, therefore: v’ = Rn, (v) = Rn, (v|| + v) = = Rn, (v||) + Rn, (v) = = v|| + Rn, (v) • We only need to rotate v by angle in the plane perpendicular to n. n P’ P v’ v v|| v O
The formula for P’ • The rotation doesn’t affect the axis of rotation, therefore: v’ = Rn, (v) = Rn, (v|| + v) = = Rn, (v||) + Rn, (v) = = v|| + Rn, (v) • We only need to rotate v by angle in the plane perpendicular to n. n P v|| v O
The formula for P’ • We rotate v in the plane perpendicular to n. The plane =Span{v, n v}. • v, n v n • n v v • Therefore, Rn, (v) = cosv + sin (n v) = cosv + sin (n v) n v = n (v|| + v) = n v||+ n v = n v n R (v) v|| v R (v) = (cos, sin) n v v
The formula for P’ v’ = Rn, (v) = v|| + Rn, (v) = = <n, v>n + cosv + sin (n v) = = <n, v>n + cos (v <n, v>n) + + sin (n v) = = cosv + (1cos) <n, v> n + + sin (n v). n P’ v|| v Rn, (v) = cosv + (1cos) <n, v> n + sin (n v).
Interpolating rotations in 3D • We are animating an object by specifying the key transformations (key frames) . • Suppose two consecutive key-frames are specified by rotations R1 and R2.
How to define an interpolation?? • We can try to interpolate the two rotation matrices: R(t) = (1 t) R1 + t R2 • Doesn’t work – the result is not a rotation matrix
Solution • Use extension of ei to 3D => quaternions • Interpolate the quaternions…
Multiplication by ei in 3D - ??? • Hamilton was searching for an extension of complex numbers that would represent 3D rotations. • He first tried to find a field of numbers of the form x +yi + zj, where x, y, z R and i2 = j2 = 1. • This is not a field (not closed under multiplication). • One day, Hamilton realized that he needs four scalars: s +xi + yj + zk ! He called these objects quaternions.
Quaternions • The ring of quaternions={s +xi + yj + zk} • i2 = j2 = k2 = 1 • ij = k, ji = k; jk = i, kj = i; ki = j, ik = j • We will denoteq = (s, v) = s +xi + yj + zk wherev = (x, y, z) • q1 q2 = (s1, v1) (s2, v2) = = (s1 s2 <v1, v2 >, s1 v2 + s2 v1 + v1v2)
Conjugate and inner product • q = (s1, v1) = s xi yj zk • <q1 , q2> = q1 q2= s1 s2+ <v1, v2 > • ||q||2= <q, q> = s2 + x2 + y2 + z2 • q1 = q / ||q||2
Rotating with quaternions • Represent a vector v as vQ = (0, v). • Rotating about axis n, ||n|| = 1, by angle : Rn, (v) = qvQq q = (cos( /2), sin( /2) n) Proof:
Some facts about quaternions: • Rotating by q and by q has the same effect. • “Rotating” by q such that ||q|| = has a scaling effect. • So, we consider the unit quaternions only ||q|| =1 • These quaterions live on the unit sphere in four dimensions… • So, we have 3 degrees of freedom for our rotation quaterion (just like with n, rotation: 1 degree for + 2 degrees for n = 3 degrees of freedom.)
Now, how do we interpolate? • Given two rotations q1 and q2 • Simple interpolation q(t) = (1 t) q1+t q2 is not good enough – doesn’t give “constant speed”: q1 q2
Now, how do we interpolate? • Given two rotations q1 and q2 • Simple interpolation q(t) = (1 t) q1+t q2 is not good enough – doesn’t give “constant speed” • The unit quaternions live on the unit sphere, so we want to draw a great arc from q1 to q2 on that sphere (it gives the shortest path on the sphere). q2 q1
Spherical interpolation (slerp) q2 q(t) q1
See you next time Next week the lesson will be presented by Andrei, you will learn about SVD…