Week 4 - Monday CS361
Last time What did we talk about last time? Vectors
Questions?
Project 1
Geometric Interpretations
Cross product The cross product of two vectors finds a vector that is orthogonal to both For 3D vectors u and v in an orthonormal basis, the cross product w is:
Cross product rules 𝐰 = 𝐮×𝐯 = 𝐮 𝐯 sin θ 𝐮×𝐯=−𝐯×𝐮 𝑎𝐮+𝑏𝐯 ×𝐰=𝑎 𝐮×𝐰 +𝑏(𝐯×𝐰) In addition wu and wv u, v, and w form a right-handed system
Things to remember Vectors can represents points or directions The norm of a vector gives its length The dot product of two vectors gives a measure of how much they point in the same direction A scalar! The cross product of two vectors gives a third vector, orthogonal to both of the original vectors
Drawing Primitives with Lighting in MonoGame
Student Lecture: Matrices
Matrices
A matrix A matrix M is a set of p x q scalars with each element named mij, where 0 ≤ i ≤ p – 1 and 0 ≤ j ≤ q – 1 We display them as p rows and q columns
Identity matrix The identity or unit matrix I is a square matrix whose diagonal is all ones with zeroes elsewhere
Operations We will be interested in a number of operations on matrices, including: Addition Scalar multiplication Transpose Trace Matrix-matrix multiplication Determinant Inverse
Matrix-matrix addition Similar to vector addition, matrix-matrix addition gives as its result a new matrix made up of element by element additions The two matrices must be the same size
Scalar-matrix multiplication Similar to scalar-vector multiplication, scalar-matrix addition results in a matrix where each element is multiplied by the scalar Properties 0M = 0 1M = M a(bM) = (ab)M a0 = 0 (a+b)M = aM + bM a(M + N) = aM + aN
Transpose of a matrix Transposing a matrix means exchanging its rows for columns It has the effect of mirroring the matrix around its diagonal (or close to it, if not square) Properties (aM)T = aMT (M + N)T = MT + NT (MT)T = M (MN)T = NTMT
Trace of a matrix The trace of a square matrix is the sum of its diagonal elements This is useful in defining quaternion conversions
Matrix-matrix multiplication Multiplication MN is legal only if M is p x q and N is q x r Each row of M and each column of N are combined with a dot product and put in the corresponding row and column element 𝐌𝐍=𝐓= 𝑡 𝑖𝑗 = 𝑘=0 𝑞−1 𝑚 𝑖𝑘 𝑛 𝑘𝑗
Properties of matrix-matrix multiplication (LM)N = L(MN) (L + M)N = LN + MN MI = IM = M Matrix-matrix multiplication is not commutative We can treat a vector as an n x 1 matrix and do matrix-vector multiplication similarly
Determinant The determinant is a measure of the "magnitude" of a square matrix We'll focus on determinants for 2 x 2 and 3 x 3 matrices
Subdeterminant The subdeterminant or cofactor dij of matrix M is the determinant of the (n – 1) x (n – 1) matrix formed when row i and column j are removed Below is d02 for a 3 x 3 matrix M
Adjoint The adjoint of a matrix is a form useful for transforming surface normals We can also use the adjoint when finding the inverse of a matrix We need the subdeterminant dij to define the adjoint The adjoint A of an arbitrary sized matrix M is: For a 3 x 3:
Multiplicative inverse of a matrix For a square matrix M where |M| ≠ 0, there is a multiplicative inverse M-1 such that MM-1 = I For implicit inverse, we only need to find v in the equation u = Mv, done as follows: For cases up to 4 x 4, we can use the adjoint:
Notes about the inverse For cases larger than 4 x 4, other methods are necessary: Gaussian elimination LU decomposition Fortunately, we never need more than 4 x 4 in graphics Properties of the inverse: (M-1)T = (MT)-1 (MN)-1 = N-1M-1
Orthogonal matrices A square matrix is orthogonal if and only if its transpose is its inverse MMT = MTM = I Lots of special things are true about an orthogonal matrix M |M| = ± 1 M-1 = MT MT is also orthogonal ||Mu|| = ||u|| Mu Mv iff u v If M and N are orthogonal, so is MN An orthogonal matrix is equivalent to an orthonormal basis of vectors lined up together
Homogeneous notation Why do we often have vectors of 4 things or 4 x 4 matrices in graphics? We have points (locations) and vectors (directions) What's really confusing is that we represent them the same way (in what looks like a vector for both) We need to translate points but translation isn't meaningful for vectors A 3 x 3 matrix can rotate, scale, or shear, but it can't translate
How we do it We add an extra value to our vectors It's a 0 if it’s a direction It's a 1 if it's a point Now we can do a rotation, scale, or shear with a matrix (with an extra row and column):
Translations Then, we multiply by a translation matrix (which doesn't affect a direction vector)
Upcoming
Next time… Geometric techniques Any trigonometry that seems useful
Reminders Keep reading Appendix A Read Appendix B Keep working on Project 1, due Friday