Lecture 05: Transform 2
description
Transcript of Lecture 05: Transform 2
COMP 175 | COMPUTER GRAPHICS
Remco Chang 1/5105 – Transform 2
Lecture 05:Transform 2
COMP 175: Computer GraphicsFebruary 11, 2016
COMP 175 | COMPUTER GRAPHICS
Remco Chang 2/5105 – Transform 2
How do you multiply a (3x3) matrix by 3D vector?
How do you multiply two 3x3 matrices?
Given this matrix: , what are the 4 basis vectors? How did you find those?
Matrix as a coordinate transform What happens if you have a 2x3 matrix (2 rows, 3 columns) and we
multiply it by a 3D vector? What happens if we have a 3x2 matrix (3 rows, 2 columns) and we
multiply it by a 3D vector?
Refresher
COMP 175 | COMPUTER GRAPHICS
Remco Chang 3/5105 – Transform 2
Write out the basic forms for a 2D: Scaling matrix Rotation matrix Translation matrix
Why is Translation transform affine but not linear?
Why do we use 4x4 Matrices?
How are Points and Vectors represented differently, and why?
Refresher
COMP 175 | COMPUTER GRAPHICS
Remco Chang 4/5105 – Transform 2
Window Transformations: Given a window (rectangle) with bounding coordinates Create a matrix that can both move and scale this matrix
so that the new bounding box is
Exercise
COMP 175 | COMPUTER GRAPHICS
Remco Chang 5/5105 – Transform 2
This is important! Think about what this means for 2D graphics and visualization.
In 3D graphics, this is also commonly used to create viewports. So this matrix is known as the “window-to-viewport” transformation
Exercise - Solution
COMP 175 | COMPUTER GRAPHICS
Remco Chang 6/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 7/5105 – Transform 2
For Scaling, we have:
where
If I want to go backwards, that is, if I was given x’, y’, how would I find x and y? In other words, I want:
Find
Matrix Inverse
COMP 175 | COMPUTER GRAPHICS
Remco Chang 8/5105 – Transform 2
If I want to go backwards, that is, if I was given x’, y’, how would I find x and y? In other words, I want:
Find
If we look at it at a component level: , then
Matrix Inverse
COMP 175 | COMPUTER GRAPHICS
Remco Chang 9/5105 – Transform 2
If we look at it at a component level: , then
Let’s put that back into a matrix form:
where
Matrix Inverse
COMP 175 | COMPUTER GRAPHICS
Remco Chang 10/5105 – Transform 2
Notice that if we were to multiply the two together: or , we get back the identity matrix
In other words:
Matrix Inverse
COMP 175 | COMPUTER GRAPHICS
Remco Chang 11/5105 – Transform 2
Definition:
Inverting composed matrices:
Note,
It is important to note that a matrix is not always invertable. A matrix will not be invertible if: It is not a square matrix ( matrix) It has row/column of all zeros (because the row/col can be deleted) If any row/col is a multiple of any other row/col (if a row is not linearly
independent) Matrices for Rotation, Scaling, Translation (using homogeneous
coordinates) will always have inverses!
Matrix Inverse
COMP 175 | COMPUTER GRAPHICS
Remco Chang 12/5105 – Transform 2
Is to think of an inverse as an “undo” For example, if A scales by a factor of 2 and rotates
135 degrees, then A-1 will rotate by -135 degrees and scale by 0.5
One Way To Think About Inverses…
Rectangle(B) A*B A-1*B A-1*A*B
COMP 175 | COMPUTER GRAPHICS
Remco Chang 13/5105 – Transform 2
We have found the inverse matrix of a Scaling matrix.
Let’s find the inverse matrix of a Translation matrix
Finding Inverse Matrices…
COMP 175 | COMPUTER GRAPHICS
Remco Chang 14/5105 – Transform 2
This is pretty simple, we just want to “subtract” the change…
What about Rotation matrix?
Finding Inverse Matrices…
COMP 175 | COMPUTER GRAPHICS
Remco Chang 15/5105 – Transform 2
Regular Rotation Matrix:
Inverse Rotation Matrix:
Inverse Rotation Matrix
COMP 175 | COMPUTER GRAPHICS
Remco Chang 16/5105 – Transform 2
For Scaling, we have:
where
For Rotation, we have:
where
For Translation, we have:
where
Recap of Inverses
COMP 175 | COMPUTER GRAPHICS
Remco Chang 17/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 18/5105 – Transform 2
What is the transpose of a matrix A?
It’s making the rows of the matrix its columns, and its columns become rows Or, you can think of it as: “turning the matrix by 90
degrees
Matrix Transpose
COMP 175 | COMPUTER GRAPHICS
Remco Chang 19/5105 – Transform 2
The inverse of a Rotation Matrix is the same as its transpose . In other words,
Let’s prove this… First, we note the properties of : Columns are orthogonal to each other (e.g., Columns represent unit vectors:
Let’s multiply : =
Neat Fact about Rotation Matrix
COMP 175 | COMPUTER GRAPHICS
Remco Chang 20/5105 – Transform 2
Let’s multiply : =
Based on our rules, the right hand side comes out to: , which is the identity matrix. This means that , by definition,
Neat Fact about Rotation Matrix
COMP 175 | COMPUTER GRAPHICS
Remco Chang 21/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 22/5105 – Transform 2
For Scaling, we have:
For Rotation, we have:
For Translation, we have:
Composition of Transformations!
COMP 175 | COMPUTER GRAPHICS
Remco Chang 23/5105 – Transform 2
So, if I want to combine the 3 transformations…
This means:
Composition of Transformations!
COMP 175 | COMPUTER GRAPHICS
Remco Chang 24/5105 – Transform 2
Recall that matrix operations are associative. Meaning that: (1+2)+3 = 1+(2+3),
But it is not commutative: 1+2+3 3+2+1
This means that I can pre-multiply , so that , where
Composition of Transformations!
COMP 175 | COMPUTER GRAPHICS
Remco Chang 25/5105 – Transform 2
Remember, ORDER MATTERS!!
So
For Example….
Composition of Transformations!
COMP 175 | COMPUTER GRAPHICS
Remco Chang 26/5105 – Transform 2
Not commutativeTranslate by =6, =0 then rotate by 45º
Rotate by 45º then translate by =6, =0
0 1
1
2
2
3 4 5 6 7 8 9 10
3
4
5
6
Y
X 0
1
1
2
2
3 4 5 6 7 8 9 10
3
4
5
6
COMP 175 | COMPUTER GRAPHICS
Remco Chang 27/5105 – Transform 2
Start: Goal:
Important concept: Make the problem simpler Translate object to origin first, scale , rotate, and translate back
Apply to all vertices
Composition (an example) (2D)Rotate 90Uniform Scale 3xBoth around object’s center,not the origin
COMP 175 | COMPUTER GRAPHICS
Remco Chang 28/5105 – Transform 2
Composition (an example) (2D) (2/2)
But what if we mixed up the order? Let’s try
Oops! We managed to scale it properly but when we rotated it we rotated the object about the origin, not its own center, shifting its position…Order Matters!
http://www.cs.brown.edu/exploratories/freeSoftware/repository/edu/brown/cs/exploratories/applets/transformationGame/transformation_game_guide.html (Transformations applet)
COMP 175 | COMPUTER GRAPHICS
Remco Chang 29/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 30/5105 – Transform 2
Recall that:
Why is that?
For example: Let , then In terms of operations, it makes sense:
1) Rotate 2) Translate
In reverse, I would want to 1) Reverse Translate 2) Reverse Rotate
Inverse Composite Matrix
COMP 175 | COMPUTER GRAPHICS
Remco Chang 31/5105 – Transform 2
What is the inverse of a sequence of transformations?
Inverse of a sequence of transformations is the composition of the inverses of each transformation in reverse order
Say from our from our previous example we wanted do the opposite, what will our sequence look like?
We still translate to origin first, then translate back at the end!
Inverses Revisited
COMP 175 | COMPUTER GRAPHICS
Remco Chang 32/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 33/5105 – Transform 2
We understand linear transformations as changing the position of vertices relative to the standard axes
Can also think of transforming the coordinate axes themselves
Just as in matrix composition, be careful of which order you modify your coordinate system
Transforming Coordinate Axes
Rotation Scaling Translation
COMP 175 | COMPUTER GRAPHICS
Remco Chang 34/5105 – Transform 2
We have been doing everything in 2D. What happens in 3D Cartesian Coordinate System?
Mapping It to 3D
COMP 175 | COMPUTER GRAPHICS
Remco Chang 35/5105 – Transform 2
For Scaling, we have:
For Rotation, we have:
For Translation, we have:
(will be explained)
Composition of Transformations!
COMP 175 | COMPUTER GRAPHICS
Remco Chang 36/5105 – Transform 2
Rotation by angle around v =
Here’s a not so friendly rotation matrix:
This is called the coordinate form of Rodrigues’s formula
Let’s try a different way…
Rotation
COMP 175 | COMPUTER GRAPHICS
Remco Chang 37/5105 – Transform 2
Every rotation can be represented as the composition of 3 different angles of CLOCKWISE rotation around 3 axes, namely -axis in the plane by -axis in the plane by -axis in the plane by
Also known as Euler angles, makes the problem of rotation much easier to deal with
: rotation around the axis, : rotation about the axis, : rotation about the axis You can compose these matrices to form a composite rotation matrix
Rotating axis by axis (1/2)
COMP 175 | COMPUTER GRAPHICS
Remco Chang 38/5105 – Transform 2
It would still be difficult to find the 3 angles to rotate by given arbitrary axis and specified angle
Solution? Make the problem easier
Step 1: Find a to rotate around axis to put in the plane
Step 2: Then find a to rotate around the axis to align with the axis
Step 3: Rotate by around axis = axis
Step 4: Finally, undo the alignment rotations (inverse)
Rotation Matrix:
Rotating axis by axis (2/2)
COMP 175 | COMPUTER GRAPHICS
Remco Chang 39/5105 – Transform 2
Inverses are once again parallel to their 2D versions…
Composition works exactly the same way…
Inverses and Composition in 3D!
Transformation Matrix Inverse
Scaling
Rotation
Translation
COMP 175 | COMPUTER GRAPHICS
Remco Chang 40/5105 – Transform 2
Let’s take some 3D object, say a cube, centered at (2,2,2) Rotate in object’s space by 30 around axis, 60 around and 90around Scale in object space by 1 in the , 2 in the , 3 in the Translate by (2,2,4) Transformation Sequence: , where translates to
Example in 3D!
40
COMP 175 | COMPUTER GRAPHICS
Remco Chang 41/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 42/5105 – Transform 2
We’re going to use Gauss-Jordan elimination Finding A-1 with Gauss-Jordan elimination is done by augmenting A
with I to get [A|I], then reducing the new matrix into reduced row echelon form (rref) to get a new matrix. This new matrix will be of the form [I|A-1]
What does rref really mean? If a row does not consist entirely of zeros, then the first nonzero number in the row is a
1. (Call this a leading 1) If there are any rows that consist entirely of zeros, then they are grouped together at
the bottom of the matrix. If any two successive rows do not consist entirely of zeros, the leading 1 in the lower
row occurs farther to the right than the leading 1 in the higher row Each column that contains a leading 1 has zeros everywhere else.
How to Invert a Matrix
COMP 175 | COMPUTER GRAPHICS
Remco Chang 43/5105 – Transform 2
To transform a matrix into rref we are allowed to perform any of the three elementary row operations. These are: Multiply a row by a nonzero constant Interchange two rows Add a multiple of one row to another row
How to Invert a Matrix
COMP 175 | COMPUTER GRAPHICS
Remco Chang 44/5105 – Transform 2
Given: , let’s find :
1. Augment this with the identity:
2. Row operation 1: multiply row 1 by 1/11
3. Row operation 3: multiply row 1 by -17 and add it to row 2:
How to Invert a Matrix, Example
COMP 175 | COMPUTER GRAPHICS
Remco Chang 45/5105 – Transform 2
4. Row operation 1, multiply row 2 by –11/12
5. Row operation 3: multiply row 2 by –13/11 and add to row 1
6. Therefore:
How to Invert a Matrix, Example
COMP 175 | COMPUTER GRAPHICS
Remco Chang 46/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 47/5105 – Transform 2
The application of matrices in the row vector notation is executed in the reverse order of applications in the column vector notation:
Column format: vector follows transformation matrix:
Row format: vector precedes matrix and is post-multiplied by it:
By convention, we always use Column Format
Addendum – Matrix Notation
COMP 175 | COMPUTER GRAPHICS
Remco Chang 48/5105 – Transform 2
Uh… A problem:
While:
Addendum – Matrix Notation
COMP 175 | COMPUTER GRAPHICS
Remco Chang 49/5105 – Transform 2
In order for both types of notations to yield the same result, a matrix in the row system must be the transpose of the matrix in the column system Recall:
In order to make the two notations line up:
Be careful! Different textbooks and different graphics packages use different notations! First understand which one they use!!
Addendum – Matrix Notation
COMP 175 | COMPUTER GRAPHICS
Remco Chang 50/5105 – Transform 2
Because it fits more naturally to OpenGL’s stacks
For example, for a series of matrix operations: , how would you write this using GL calls?
What happens when I have multiple objects? For example, the solar system?...
Why Column-Format Notation?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 51/5105 – Transform 2
Questions?
COMP 175 | COMPUTER GRAPHICS
Remco Chang 52/5105 – Transform 2
Let’s say that you have a set of transforms:
Writing this in OpenGL would look something like:glTranslate3f(-xtrans, -ytrans, -ztrans);glRotate3f (angle, x_axis, y_axis, z_axis);glScale3f (xscale, yscale, zscale);glTranslate3f (xtrans, ytrans, ztrans);DrawObject();
Or, you can do this in software (SLOW) using the Algebra.h library.Matrix t_invM = inv_trans_mat (transVec);Matrix rotM = rot_mat (rotVec, angle);Matrix scaleM = scale_mat(scaleVec);Matrix tM = trans_mat (transVec);Matrix composite = t_invM * rotM * scaleM * tM;for (each vertex in object) {Point newPos = composite * vertex->getPosition();}
Converting Math to OpenGL Code