computer graphics recitation 2. 2 the plan today learn about rotations in 2d and 3d. representing...
Post on 19-Dec-2015
217 views
TRANSCRIPT
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 meanscounter-clockwise direction.
4
Rotation in 2D
Positive angle meanscounter-clockwise direction.
O
Rotation about the origin by angle .
5
Rotation in 2D – matrix representation
Multiply (x, y) by the rotation matrix:
O
P (x, y)
P’ = R (P)
cossin
sincos
cossin
sincos
)(
yxy
yxx
y
x
y
x
PRP
6
Interpolating rotations in 2D
O
We want to generate N intermediate positions:
7
Interpolating rotations in 2D
O
Divide the arc into N pieces of equal length
8
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
9
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
10
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
11
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
12
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
13
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
14
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
15
Interpolating rotations in 2D
Apply rotations for i = 1, 2, …, N
O
NiR
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 sinei (x + iy) = (cos + i sin) (x + iy) =
(x cos y sin) + i (x sin + y cos)
O
Re
Im
P = x + iy
P’ = ei (x + iy)
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 .
O
n P
21
Rotations in 3D
We express the rotation in terms of the rotation axis n = (nx , ny , nz), ||n|| = 1, and the rotation angle .
O
n P
P’
22
The formula for P’
Decompose v into to components:
v = v|| + v
v|| = <v, n> n => v|| || n
v = v – v|| => v nO
n
P
v
v
v||
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.
O
n
P
v
v
v||
P’
v’
24
The formula for P’
O
n
P
v
v||
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.
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
v
v|| R (v)
v
n v
R (v) = (cos, sin)
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
v
v||
P’
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 denote q = (s, v) = s +xi + yj + zk where v = (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
q1 = 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) = qvQq
q = (cos( /2), sin( /2) n)
Proof:
sincossin2
cos1sin2
,,)(
)(sin,)cos1(cos,0(
)(sincos2,sin2)sin(cos,0(
)sin,)(cos,0)(sin,(cos
22
22
2222
22
22
2222
cbabcacba
vnnvnv
vnnvnv
nvnqvq
:factsbasicfollowingtheUsing
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”:
q1q2
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).
q1
q2
37
Spherical interpolation (slerp)
q1
q2
21
21
,cos
]1,0[,sin
)sin(
sin
))1sin(()(
tqt
qt
tq
thatsuchiswhere
q(t)
See you next time
Next week the lesson will be presented by Andrei, you will learn about SVD…