cs 551/645 fall 2000 parameterized rotations, curves, and surfaces

26
CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Upload: thomasina-gilbert

Post on 14-Dec-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

CS 551/645Fall 2000

Parameterized Rotations, Curves, and Surfaces

Page 2: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Administrivia

• Demo code for assignment 2 is online– Go to assignment 2 page on class web page

• Test cases for assignment 2 are online– Go to assignment 2 page on class web page

• gluScaleImage() working?– To keep things simple, use correctly sized textures at

first

• TA is out of town this week – no office hours– Send me mail about questions / camera checkout– Also, Robertson Media Center should have equipment

Page 3: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Parameterizing Rotations

• Straightforward in 2D– A scalar, , represents rotation in plane

• More complicated in 3D– Three scalars are required to define orientation– Note that three scalars are also required to define

position– Objects free to translate and tumble in 3D have 6

degrees of freedom (DOF)

Page 4: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Representing 3 Rotational DOFs

• Euler Angles (3 DOFs)– Rot x + Rot y + Rot z

• Axis-angle (4 DOFs)– Axis of rotation + Rotation amount

• Quaternion (4 DOFs)– 4 dimensional complex numbers

• 3x3 Matrix (9 DOFs)– Rows of matrix define orthogonal axes

Page 5: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Euler Angles

• (x, y, z) = RzRyRx

– Rotate x degrees about x-axis

– Rotate y degrees about y-axis

– Rotate z degrees about z-axis

• Axis order is not defined– (y, z, x), (x, z, y), (z, y, x)… are all legal– Pick one

Page 6: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Euler Angles

• Rotations not uniquely defined– ex: (z, x, y) = (90, 45, 45) = (45, 0, -45)

takes positive x-axis to (1, 1, 1)– cartesian coordinates are independent of one

another, but Euler angles are not

• Gimbal Lock– Term derived from mechanical problem that

arises in gimbal mechanism that supports a compass or a gyro

Page 7: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Gimbal Lock

Page 8: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Gimbal Lock

• Occurs when two axes are aligned

• Euler angles do not rotate the coordinate axes

• But, second and third rotations have effect of transforming earlier rotations– ex: Rot x, Rot y, Rot z

• If Rot y = 90 degrees, Rot z == -Rot x

Page 9: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Interpolation

• Interpolation between two Euler angles is not unique

• ex: (x, y, z) rotation order– from (0, 0, 0) to (180, 0, 0)– from (0, 0, 0) to (0, 180, 180)– interpolating each axis of rotation idependently

results in different animation sequences

Page 10: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Axis-angle Notation

• Define an axis of rotation (x, y, z) and a rotation about that axis, R(, n)

• 4 degrees of freedom specify 3 rotational degrees of freedom because axis of rotation is constrained to be a unit vector

Page 11: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Axis-angle Notation

r

Rr

n

rpar = (n.r) n

rperp = r – (n.r) n

V = n x (r – (n.r) n) = n x r

Rr = Rrpar + Rrperp

= Rrpar + (cos ) rperp + (sin ) V=(n.r) n + cos (r – (n.r)n) + (sin ) n x r= (cos )r + (1 – cos ) n (n.r) + (sin ) n x r

Page 12: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Axis-angle Notation

• No easy way to determine how to concatenate many axis-angle rotations that result in final desired axis-angle rotation

• No simple way to interpolate rotations

Page 13: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Quaternion

• Remember complex numbers: a + ib– Where 12 = 1 and i2 = -1

• Quaternion:– Q = a + bi + cj + dk

• Where i2 = j2 = k2 = -1 and ij = k and ji = -k

– Represented as: q = (s, v) = s + vxi + vyj + vzk

Page 14: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Quaternion

• Let q1 = (s1, v1) and q2 = (s2, v2)– q1q2 = (s1s2 – v1.v2, s1v2 + s2v1 + v1 x v2)– Conjugate = q1’ = (s, -v)– q1q1’ = s2 + |v|2 = |q|2 = magnitude

• If q has unit magnitude– q = (cos, sin n)– q’ = q-1

– Define a pure quaternion: p = (0, r)– Rotating p by q

• (0, cos2r + (1 – cos2) n (n.r) + sin2 n.r)

Page 15: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Quaternion

• Continue to represent quaternion as a 4 DOF vector (as in axis-angle)

• But use quaternion algebra:– (cos (/2), sin(/2) nx, sin(/2) ny, sin(/2) nz)

• The product of two unit quaternions is a unit quaternion

Page 16: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Quaternion Example

• X-roll of – (cos (/2), sin (/2) (1, 0, 0) = (0, (1, 0, 0))

• Y-roll 0f – (0, (0, 1, 0)

• Z-roll of – (0, (0, 0, 1))

• Ry () followed by Rz ()– (0, (0, 1, 0) times (0, (0, 0, 1)) = (0, (0, 1, 0) x (0, 0, 1)

= (0, (1, 0, 0))

Page 17: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Quaternion Interpolation

• Biggest advantage of quaternions– Interpolation– Cannot linearly interpolate between two

quaternions because it would speed up in middle– Instead, Spherical Linear Interpolation, slerp()– Used by modern video games for third-person

perspective– Why?

Page 18: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Quaternion Code

• http://www.gamasutra.com/features/programming/19980703/quaternions_01.htm

• Camera control code– http://www.xmission.com/~nate/smooth.html

• File, gltb.c

• gltbMatrix and gltbMotion

Page 19: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Using Quaternions in Assignment 3 part 2

• Nate’s ‘Smooth’ program uses axis-angle to represent the rotation

• He then uses glRotate to convert this to a rotation matrix and adds it to the modelview matrix stack

• Instead, you convert axis-angle to quaternion and then to rotation matrix

• You then put this rotation matrix on stack

Page 20: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Rotation Matrix

• 9 DOFs must reduce to 3• Rows must be unit length (-3 DOFs)• Rows must be orthogonal (-3 DOFs)• Drifting matrices is very bad

– Numerical errors results when trying to gradually rotate matrix by adding derivatives

– Resulting matrix may scale / shear– Gram-Schmidt algorithm will re-orthogonalize your

matrix

• Difficult to interpolate between matrices

Page 21: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Representations of Curves

• Problems with series of points used to model a curve– Piecewise linear - Does not accurately model a smooth

line

– It’s tedious

– Expensive to manipulate curve because all points must be repositioned

• Instead, model curve as piecewise-polynomial– x = x(t), y = y(t), z = z(t)

• where x(), y(), z() are polynomials

Page 22: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Cubic Polynomials

• x(t) = axt3 + bxt2 + cxt + dx

– Similarly for y(t) and z(t)

• Let t: (0 <= t <= 1)

• Let T = [t3 t2 t 1]

• Coefficient Matrix C

• Curve: Q(t) = T.C

z

z

y

y

x

x

zyx

zyx

d

c

d

c

d

c

bbb

aaa

Page 23: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Parametric Curves

• Derivative of Q(t) is the tangent vector at t:– d/dt Q(t) = Q’(t) = d/dt T . C = [3t2 2t 1 0] . C

Page 24: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Continuity of Curves

• Two curves that join together– G0, geometric continuity

• If direction (but not necessarily magnitude) of tangent matches– G1 geometric continuity

• Matching tangent vectors (direction and magnitude)– C1 continuous, first-degree continuity in t (parametric

continuity)

• Matching direction and magnitude of dn / dtn

• Cn continous

Page 25: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Parametric Curves

• Hermite – two endpoints and two endpoint tangent vectors

• Bezier - two endpoints and two other points that define the endpoint tangent vectors

• Splines – four control points. – C1 and C2 continuity at the join points– Come close to their control points, but not

guaranteed to touch them

Page 26: CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces

Parametric Curves

• Difficult to conceptualize curve as– x(t) = axt3 + bxt2 + cxt + dx

• Instead, define curve as weighted combination of 4 well-defined cubic polynomials

• Each curve type defines different cubic polynomials and weighting schemes