- 166 Views
- Uploaded on
- Presentation posted in: General

CS361

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Week 5 - Monday

CS361

- What did we talk about last time?
- Trigonometry
- Transforms
- Affine transforms
- Rotation
- Scaling
- Shearing
- Concatenation of transforms

- The matrix used to transform points will not always work on surface normals
- Rotation is fine
- Uniform scaling can stretch the normal (which should be unit)
- Non-uniform scaling distorts the normal

- Transforming by the transpose of the adjoint always gives the correct answer
- In practice, the transpose of the inverse is usually used

- Because of the singular value theorem, we can write any square, real-valued matrix M with positive determinant as:
- M = R1SR2
- where R1 and R2 are rotation matrices and S is a scaling matrix

- (M-1)T= ((R1SR2)-1)T
= (R2-1S-1R1-1)T

= (R1-1)T(S-1)T(R2-1)T

= R1S-1 R2

- Rotations are fine for the normals, but non-uniform scaling will distort them
- The transpose of the inverse distorts the scale in the opposite direction

- With homogeneous notation, translations do not affect normals at all
- If only using rotations, you can use the regular world transform for normals
- If using rotations and uniform scaling, you can use the world transform for normals
- However, you'll need to normalize your normals so they are unit

- If using rotations and non-uniform scaling, use the transpose of the inverse or the transpose of the adjoint
- They only differ by a factor of the determinant, and you'll have to normalize your normals anyway

- For normals and other things, we need to be able to compute inverses
- Rigid body inverses were given before
- For a concatenation of simple transforms with known parameters, the inverse can be done by inverting the parameters and reversing the order:
- If M = T(t)R() then M-1 = R(-)T(-t)

- For orthogonal matrices, M-1 = MT
- If nothing is known, use the adjoint method

- We can describe orientations from some default orientation using the Euler transform
- The default is usually looking down the –z axis with "up" as positive y
- The new orientation is:
- E(h, p, r) = Rz(r)Rx(p)Ry(h)
- h is head, like shaking your head "no"
- Also called yaw

- p is pitch, like nodding your head back and forth
- r is roll… the third dimension

- One trouble with Euler angles is that they can exhibit gimbal lock
- In gimbal lock, two axes become aligned, causing a degree of freedom to be lost
- Euler angles can describe orientations in multiple ways, however the wrong choice of rotations may cause gimbal lock

- Sometimes you want to rotate around some arbitrary axis r
- To do so, create an orthonormal basis r, s, and t as follows
- Take the smallest component of r and set it to 0
- Swap the two remaining components and negate the first one
- Divide the result by its norm, making it a normal vector s
- Let t = r x s

- This basis can be made into a matrix M
- The final transform X transforms the r-axis to the x-axis, does the rotation by α and then transforms back to r
- X = MTRx(α)M

- Quaternions are a compact way to represent orientations
- Pros:
- Compact (only four values needed)
- Do not suffer from gimbal lock
- Are easy to interpolate between

- Cons:
- Are confusing
- Use three imaginary numbers
- Have their own set of operations

- A quaternion has three imaginary parts and one real part
- We use vector notation for quaternions but put a hat on them
- Note that the three imaginary number dimensions do not behave the way you might expect

- Multiplication
- Addition
- Conjugate
- Norm
- Identity

- Inverse
- One (useful) conjugate rule:
- Note that scalar multiplication is just like scalar vector multiplication for any vector
- Quaternion quaternion multiplication is associative but not commutative
- For any unit vector u, note that the following is a unit quaternion:

- Take a vector or point p and pretend its four coordinates make a quaternion
- If you have a unit quaternion
the result of is p rotated around the u axis by 2

- Note that, because it's a unit quaternion,
- There are ways to convert between rotation matrices and quaternions
- The details are in the book

- Short for spherical linear interpolation
- Using unit quaternions that represent orientations, we can slerp between them to find a new orientation at time t = [0,1], tracing the path on a unit sphere between the orientations
- To find the angle between the quaternions, you can use the fact that cos = qxrx + qyry + qzrz+ qwrw

- Vertex blending
- Morphing
- Projections

- Keep reading Chapter 4
- Exam 1 next Wednesday