1 / 38

Computer Graphics

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.

tareq
Télécharger la présentation

Computer Graphics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Graphics Recitation 2

  2. The plan today • Learn about rotations in 2D and 3D. • Representing rotations by quaternions.

  3. Rotation in 2D • Rotation about the origin by angle .  O Positive angle means counter-clockwise direction.

  4. Rotation in 2D • Rotation about the origin by angle .  O Positive angle means counter-clockwise direction.

  5. Rotation in 2D – matrix representation • Multiply (x, y) by the rotation matrix: P’ = R (P) P (x, y)  O

  6. Interpolating rotations in 2D • We want to generate N intermediate positions:  O

  7. Interpolating rotations in 2D • Divide the arc into N pieces of equal length  O

  8. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  9. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  10. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  11. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  12. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  13. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  14. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  15. Interpolating rotations in 2D • Apply rotations for i = 1, 2, …, N  O

  16. 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.

  17. 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) = (xcosysin) + i (xsin + ycos) Im P’ = ei(x + iy) P = x + iy  O Re

  18. Rotations in 3D

  19. 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.

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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) = cosv + sin (n  v) = cosv + 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

  26. The formula for P’ v’ = Rn, (v) = v|| + Rn, (v) = = <n, v>n + cosv + sin (n  v) = = <n, v>n + cos (v  <n, v>n) + + sin (n  v) = = cosv + (1cos) <n, v> n + + sin (n  v). n P’ v||  v Rn, (v) = cosv + (1cos) <n, v> n + sin (n  v).

  27. 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.

  28. 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

  29. Solution • Use extension of ei to 3D => quaternions • Interpolate the quaternions…

  30. 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.

  31. 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 + v1v2)

  32. 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 • q1 = q / ||q||2

  33. Rotating with quaternions • Represent a vector v as vQ = (0, v). • Rotating about axis n, ||n|| = 1, by angle  : Rn, (v) = qvQq q = (cos( /2), sin( /2) n) Proof:

  34. 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.)

  35. 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

  36. 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

  37. Spherical interpolation (slerp) q2 q(t) q1

  38. See you next time Next week the lesson will be presented by Andrei, you will learn about SVD…

More Related