520 likes | 765 Views
Linear Algebra Review. CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005. Coordinate Systems. Right handed coordinate system. Vector Arithmetic. Vector Magnitude. The magnitude (length) of a vector is: Unit vector (magnitude=1.0). Dot Product.
E N D
Linear Algebra Review CSE169: Computer Animation Instructor: Steve Rotenberg UCSD, Winter 2005
Coordinate Systems • Right handed coordinate system
Vector Magnitude • The magnitude (length) of a vector is: • Unit vector (magnitude=1.0)
Example: Angle Between Vectors • How do you find the angle θ between vectors a and b? b θ a
Dot Products with Unit Vectors 0 <a·b < 1 a·b = 0 a·b = 1 b θ a -1 < a·b < 0 a·b a·b = -1
Dot Products with Non-Unit Vectors • If a and b are arbitrary (non-unit) vectors, then the following are still true: • If θ < 90º then a·b > 0 • If θ = 90º then a·b = 0 • If θ > 90º then a·b < 0
Dot Products with One Unit Vector • If |u|=1.0 then a·u is the length of the projection of a onto u a u a·u
• x n p • Example: Distance to Plane • A plane is described by a point p on the plane and a unit normal n. Find the distance from point x to the plane
• x n p • Example: Distance to Plane • The distance is the length of the projection of x-p onto n: x-p
Properties of the Cross Product area of parallelogram ab if a and b are parallel is perpendicular to both a and b, in the direction defined by the right hand rule
Example: Area of a Triangle • Find the area of the triangle defined by 3D points a, b, and c c b a
Example: Area of a Triangle c c-a b a b-a
Example: Alignment to Target • An object is at position p with a unit length heading of h. We want to rotate it so that the heading is facing some target t. Find a unit axis a and an angle θ to rotate around. t • • p h
Example: Alignment to Target a t t-p • θ • p h
Trigonometry cos2θ+ sin2θ= 1 1.0 sin θ θ cos θ
Laws of Sines and Cosines • Law of Sines: • Law of Cosines: b α γ c a β
Matrices • Computer graphics apps commonly use 4x4 homogeneous matrices • A rigid 4x4 matrix transformation looks like this: • Where a, b, & c are orthogonal unit length vectors representing orientation, and d is a vector representing position
Matrices • The right hand column can cause a projection, which we won’t use in character animation, so we leave it as 0,0,0,1 • Some books store their matrices in a transposed form. This is fine as long as you remember that: (A·B)T = BT·AT
Example: Target ‘Lock On’ • For an airplane to get a missile locked on, the target must be within a 10 degree cone in front of the plane. If the plane’s matrix is M and the target position is t, find an expression that determines if the plane can get a lock on. b • t d c a
Example: Target ‘Lock On’ • We want to check the angle between the heading vector (-c) and the vector from d to t: • We can speed that up by comparing the cosine instead ( cos(10°)=.985 )
Example: Target ‘Lock On’ • We can even speed that up further by removing the division and the square root in the magnitude computation:
Orthonormality • If all row vectors and all column vectors of a matrix are unit length, that matrix is said to be orthonormal • This also implies that all vectors are perpendicular to each other • Orthonormal matrices have some useful mathematical properties, such as: • M-1 = MT
Orthonormality • If a 4x4 matrix represents a rigid transformation, then the upper 3x3 portion will be orthonormal
Determinants • The determinant of a 4x4 matrix with no projection is equal to the determinant of the upper 3x3 portion
Determinants • The determinant is a scalar value that represents the volume change that the transformation will cause • An orthonormal matrix will have a determinant of 1, but non-orthonormal volume preserving matrices will have a determinant of 1 also • A flattened or degenerate matrix has a determinant of 0 • A matrix that has been mirrored will have a negative determinant
Transformations • To transform a vector v by matrix M: v’=v·M • If we want to apply several transformations, we can just multiply by several matrices: v’=(((v·M1)·M2)·M3)·M4… • Or we can concatenate the transformations into a single matrix: Mtotal=M1·M2·M3·M4… v’=v·Mtotal
Matrix Transformations • We usually transform vertices from some local space where they are defined into a world space v’ = v·W • Once in world space, we can perform operations that require everything to be in the same space (collision detection, high quality lighting…) • Then, they are transformed into a camera’s space, and then projected into 2D v’’ = v’·C-1·P • In simple situations, we can do this all in one step: v’’ = v·W·C-1·P
Inversion • If M transforms v into world space, then M-1 transforms v’ back into local space
Homogeneous Vectors • Technically, homogeneous vectors are 4D vectors that get projected into the 3D w=1 space
Homogeneous Vectors • Vectors representing a position in 3D space can just be written as: • Vectors representing direction are written: • The only time the w coordinate will be something other than 0 or 1 is in the projection phase of rendering, which is not our problem
Position Vector Dot Matrix y v=(.5,.5,0,1) x (0,0,0) Local Space
Position Vector Dot Matrix b Matrix M y y d a v=(.5,.5,0,1) x x (0,0,0) (0,0,0) Local Space World Space
Position Vector Dot Matrix b v’ y y d a v=(.5,.5,0,1) x x (0,0,0) (0,0,0) Local Space World Space
Matrix Dot Matrix (4x4) • The row vectors of M’ are the row vectors of M transformed by matrix N • Notice that a, b, and c transform as direction vectors and d transforms as a position
Identity • Take one more look at the identity matrix • It’s a axis lines up with x, b lines up with y, and c lines up with z • Position d is at the origin • Therefore, it represents a transformation with no rotation or translation
Camera Matrix • Think of the camera just like any other object. Just as a chair model has a matrix W that transforms it into world space, the camera matrix C would transform a camera model into world space. • We don’t want to transform the camera into world space. Instead, we want to transform the world into the camera’s space, so we use the inverse of C.
Example: Camera ‘Look At’ • Our eye is located at position e and we want to look at a target at position t. Generate an appropriate camera matrix M.
Example: Camera ‘Look At’ • Our eye is located at position e and we want to look at a target at position t. Generate an appropriate camera matrix M. • Two possible approaches include: • Measure angles and rotate matrix into place • Construct a,b,c, & d vectors of M directly
Example: Camera ‘Look At’Method 1: Measure Angles & Rotate • Measure Angles: • Tilt angle • Heading angle • Position • Construct matrix by starting with the identity, then apply tilt and heading rotations
Example: Camera ‘Look At’Method 2: Build Matrix Directly • The d vector is just the position of the camera, which is e: • The c vector is a unit length vector that points directly behind the viewer:
Example: Camera ‘Look At’Method 2: Build Matrix Directly • The a vector is a unit length vector that points to the right of the viewer. It is perpendicular to the c axis. To keep the camera from rolling, we also want the a vector to lay flat in the xz-plane, perpendicular to the y-axis. • Note that a cross product with the y-axis can be optimized as follows: