Lecture 05: Transform 2

52
COMP 175 | COMPUTER GRAPHICS Remco Chang 1/51 05 – Transform 2 Lecture 05: Transform 2 COMP 175: Computer Graphics February 11, 2016

description

Lecture 05: Transform 2. COMP 175: Computer Graphics February 11, 2014. Refresher. 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 - PowerPoint PPT Presentation

Transcript of Lecture 05: Transform 2

Page 1: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 1/5105 – Transform 2

Lecture 05:Transform 2

COMP 175: Computer GraphicsFebruary 11, 2016

Page 2: Lecture 05: Transform 2

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

Page 3: Lecture 05: Transform 2

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

Page 4: Lecture 05: Transform 2

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

Page 5: Lecture 05: Transform 2

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

Page 6: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 6/5105 – Transform 2

Questions?

Page 7: Lecture 05: Transform 2

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

Page 8: Lecture 05: Transform 2

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

Page 9: Lecture 05: Transform 2

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

Page 10: Lecture 05: Transform 2

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

Page 11: Lecture 05: Transform 2

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

Page 12: Lecture 05: Transform 2

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

Page 13: Lecture 05: Transform 2

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…

Page 14: Lecture 05: Transform 2

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…

Page 15: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 15/5105 – Transform 2

Regular Rotation Matrix:

Inverse Rotation Matrix:

Inverse Rotation Matrix

Page 16: Lecture 05: Transform 2

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

Page 17: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 17/5105 – Transform 2

Questions?

Page 18: Lecture 05: Transform 2

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

Page 19: Lecture 05: Transform 2

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

Page 20: Lecture 05: Transform 2

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

Page 21: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 21/5105 – Transform 2

Questions?

Page 22: Lecture 05: Transform 2

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!

Page 23: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 23/5105 – Transform 2

So, if I want to combine the 3 transformations…

This means:

Composition of Transformations!

Page 24: Lecture 05: Transform 2

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!

Page 25: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 25/5105 – Transform 2

Remember, ORDER MATTERS!!

So

For Example….

Composition of Transformations!

Page 26: Lecture 05: Transform 2

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

Page 27: Lecture 05: Transform 2

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

Page 28: Lecture 05: Transform 2

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)

Page 29: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 29/5105 – Transform 2

Questions?

Page 30: Lecture 05: Transform 2

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

Page 31: Lecture 05: Transform 2

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

Page 32: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 32/5105 – Transform 2

Questions?

Page 33: Lecture 05: Transform 2

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

Page 34: Lecture 05: Transform 2

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

Page 35: Lecture 05: Transform 2

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!

Page 36: Lecture 05: Transform 2

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

Page 37: Lecture 05: Transform 2

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)

Page 38: Lecture 05: Transform 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)

Page 39: Lecture 05: Transform 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

Page 40: Lecture 05: Transform 2

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

Page 41: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 41/5105 – Transform 2

Questions?

Page 42: Lecture 05: Transform 2

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

Page 43: Lecture 05: Transform 2

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

Page 44: Lecture 05: Transform 2

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

Page 45: Lecture 05: Transform 2

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

Page 46: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 46/5105 – Transform 2

Questions?

Page 47: Lecture 05: Transform 2

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

Page 48: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 48/5105 – Transform 2

Uh… A problem:

While:

Addendum – Matrix Notation

Page 49: Lecture 05: Transform 2

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

Page 50: Lecture 05: Transform 2

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?

Page 51: Lecture 05: Transform 2

COMP 175 | COMPUTER GRAPHICS

Remco Chang 51/5105 – Transform 2

Questions?

Page 52: Lecture 05: Transform 2

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