quaternions slides
Download
Report
Transcript quaternions slides
Mathematical Topics
Review of some concepts:
trigonometry
aliasing
coordinate systems
homogeneous coordinates
matrices, quaternions
Vectors
v = ai + bj + ck
Describes point or displacement in n-dimensional
space
Addition, subtraction
Multiplication
scalar times vector
dot product
cross product (only in 3D)
Polar Coordinates
r
θ
x = r cos θ
y = r sin θ
Trigonometry
sin and cos, arcsin, arccos, tan, arctan
Relationships between angles and lengths of sides of
triangles
"Old Hands Always Help One Another"
mnemonic for right triangles
Axes form right triangle
r
θ
x = r cos θ
y = r sin θ
Cylindrical Coordinates
3D generalization of polar coordinates
r
r
θ
θ
z
x = r cos θ
y = r sin θ
z=z
Spherical Coordinates
θ
φ
r
r
θ
x = r cos θ sin φ
y = r sin θ sin φ
z = r cos φ
θ in (0,2π)
φ in (0,π)
Homogeneous Coordinates
In Cartesian coordinates, a point is (x, y, z)
In homogeneous coordinates, (x, y, z, 1)
generally, (x, y, z, w)
Homogenization: (x/w, y/w, z/w, 1)
The following points are equivalent:
(1,2,3,1)
(2,4,6,2)
(10,20,30,10)
Used for translation, revisit when we do perspective
Matrices
2d array of scalars
Can be thought of as "vector of vectors"
Encodes a set of linear equations
"linear" because each variable has power 1 max
Main operation: multiplication
Addition possible (rarely used in graphics)
A + B given by entrywise addition of A[i][j]+B[i][j]
Matrix Multiplication
multiply a matrix and a scalar:
s*A given by entrywise multiplication of s*A[i][j]
multiply a vector and a matrix
result is a vector of appropriate length
multiply two matrices
result is a matrix of appropriate dimensions
Matrix Operation Properties
A(BC) = (AB)C
Multiplication is associative
AB != BA (in general)
Multiplication is not commutative
Implications for coordinate transforms:
We can gather transforms into a single matrix
We must do elementary transforms in the proper order –
translate then scale != scale then translate
Matrix Rotations
We saw how matrices can encode rotations
Euler: any orientation described by axis of rotation
and magnitude of rotation from canonical
orientation
only need 3 values (2 for unit axis)
Rotation matrix: 9 elements, redundant
Problem: composing lots of rotations leads to
transformations that are not rotations
numerical errors inevitable
skew, distort the model
Quaternions
Mathematical entity made up of a scalar and a
vector
q = s+ u, q' = c' + u'
q = s + (xi + yj + zk)
q + q': entrywise addition
q * q' = s*s' - u∙u' + (u x u' + s*u' + s' * u)
Multiplicative identity: 1 + (0,0,0)
Imaginary Numbers
Recall complex numbers, a+bi, i = sqrt(-1)
Have geometric interpretation: points in 2D
Im
Re
Quaternions: generalized complex numbers
4D Complex Numbers
i2 = j2 = k2 = -1
ij = k
ji = -k
a + bi + cj + dk
4D imaginary number, or (s, v) with vector
interpretation of i, j, k
arithmetical properties of quaternions follow from the complex
interpretation
Quaternions for Rotation
A rotation is really just an axis and an angle
Quaternion as rotation
q = (s,v)
vector (axis of rotation)
scalar (amount of rotation)
Can convert quaternion to rotation matrix, or apply
to vector directly (XNA supports both)
Quaternion Rotations
Written as (cos(θ/2), v sin(θ/2))
"Unit quaternion": q∙q = 1 (if v is a unit vector)
Maintain unit quaternion by normalizing v
Why not use s for angle, v for axis directly?
lack ability to normalize (trivial objection)
difficult to compose rotations (serious)
“In mathematics you don't understand things. You
just get used to them.” (von Neumann)
Composing Rotations
With two rotations, say q1 and q2, we can create a
composite rotation q3 = q1*q2
XNA: Quaternion.Multiply(q1, q2);
Note: quaternion multiplication not commutative,
just as rotations are not commutative (order
matters)
Inverting Rotations
If you do a rotation of s about axis v...
quaternion (s,v)
...you can reverse it by rotating by –s about v
quaternion (-s,v) – but AVOID
preferred method is to rotate by s about –v
superior theoretical properties
same meaning
strange fact: (s, v) = (-s, -v) geometrically
Quaternion Rotation
Arbitrary vector r can be written in quaternion form
as (0, r)
To rotate a vector r by θ about axis v:
take q = (cos(θ/2), v sin(θ/2) )
Let p = (0,r)
obtain p' from the quaternion resulting from qpq-1
p' = (0, r')
r' is the rotated vector r
Quaternion Properties
Advantages:
reasonably compact
normalization enforces legitimate rotations
interpolation of orientation well-defined
useful for animation, will not use much in this course
Disadvantages
no significant technical disadvantages
requires 4 coordinates, possible to use 3
difficult to understand, develop intuition for
Aliasing
General term nowadays, like "bug":
visual defect in computer graphics program
Properly, narrow definition: mismatch between
sampling rate and underlying signal
Underlying signal: image, texture, synthetic
structure
Sampling rate: one sample per pixel (?)
["Reflection",
Nathan Sawaya]
Reconstructed signal will not match
real signal
Moire pattern
Sampling Limit
Need two samples per period of signal
If signal has maximum frequency < B, spatial
sampling rate 1/(2B) sufficient
In practice, output sampling (display) fixed
Need to control signal
“Don’t wear stripes on television”
Antialiasing
Pixel resolution fixed
But, can use more than one sample per pixel
Antialiasing strategy: compute multiple samples,
average them
Recent improvements: try not to average across an
edge
Antialiasing
Nvidia 2003