computer graphics recitation 2. 2 the plan today learn about rotations in 2d and 3d. representing...

Post on 19-Dec-2015

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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(()(

qq

tqt

qt

tq

thatsuchiswhere

q(t)

See you next time

Next week the lesson will be presented by Andrei, you will learn about SVD…

top related