cs 551/645 fall 2000

Post on 19-Jan-2016

57 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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? - PowerPoint PPT Presentation

TRANSCRIPT

CS 551/645Fall 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

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)

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

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

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

Gimbal Lock

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

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

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

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

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

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

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)

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

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

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?

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

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

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

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

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

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

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

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

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

top related