CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces.
-
Upload
thomasina-gilbert -
Category
Documents
-
view
217 -
download
0
Transcript of CS 551/645 Fall 2000 Parameterized Rotations, Curves, and Surfaces.
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