* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download quaternions slides
Cross product wikipedia , lookup
Non-negative matrix factorization wikipedia , lookup
Singular-value decomposition wikipedia , lookup
Eigenvalues and eigenvectors wikipedia , lookup
Euclidean vector wikipedia , lookup
Laplace–Runge–Lenz vector wikipedia , lookup
Homogeneous coordinates wikipedia , lookup
Orthogonal matrix wikipedia , lookup
Basis (linear algebra) wikipedia , lookup
Covariance and contravariance of vectors wikipedia , lookup
Linear algebra wikipedia , lookup
Matrix multiplication wikipedia , lookup
Bra–ket notation wikipedia , lookup
Tensor operator wikipedia , lookup
Cartesian tensor wikipedia , lookup
Matrix calculus wikipedia , lookup
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