Transformations
Download
Report
Transcript Transformations
Transformations
Dr. Amy Zhang
Reading
• Hill, Chapter 4, Section 4.5
• Hill, Chapter 5
2
Vectors and Points Recap
Vectors, basis, frames, and points:
3
Geometric Transformations
Functions to map points from one place to another
Geometric transformations can be applied to:
4
Drawing primitives (lines, triangles)
Pixel coordinates of an image
Use of Transformations
Map points from one coordinate system to points in
another coordinate system
Change the shape of objects
Position objects in a scene
Create multiple copies of objects in the scene
Projection for virtual cameras
Animations
5
Outline
Matrix Algebra *
Linear Transformations
Multiple Transformations
OpenGL Geometry Transformations
6
Matrices
Matrix: An array of elements that follow certain rules.
We use uppercase letters to indicate a matrix:
A matrix that has n rows and m columns is said to be
of order n x m.
7
We always mention the numbers of rows first.
Square Matrices
A matrix is square if the number of row equals the number of
columns, i.e., if n = m.
Common square matrices:
Zero matrix: a square matrix with all 0’s.
Identity matrix: all 0’s, except elements along the main
diagonal which are 1’s.
The diagonal of a square matrix:
8
Row and Column Vectors
A 1 x n matrix is called a row vector.
A n x 1 matrix is called a column vector.
We will use lower case bold letters to indicate
vectors.
In graphics (and in this class) we mostly use column
vectors.
9
Transpose of a Matrix
The transpose of A is written as AT.
AT is formed by interchanging rows and columns of
matrix A.
The transpose of a row vector is a column vector.
10
Addition and Subtraction
11
Addition and subtraction of matrices is defined by
addition and subtraction of their corresponding
elements.
Note: We can only add / subtract matrices of the same
order.
Multiplication by a Scalar
To multiply a matrix by a scalar, we multiply each
element of the matrix by the number.
Examples:
12
Matrix x Vector Multiplication
If v is a column vector, M goes on the left:
If v is a row vector, MT goes to the right:
We will use column vectors.
13
Matrix x Column Vector
We say the column vector v is pre‐multiplied by M.
The number of rows in M is equal to the number of
elements in v.
14
Matrix x Column Vector
The product Mv is a linear combination of the columns:
15
Examples
Compute the matrix‐vector product:
16
Matrix Multiplication
Just apply matrix‐vector multiplication a few times.
Remember: the new vector ( ) is a linear combination of
columns.
17
Just apply matrix‐vector multiplication a few times.
18
Just apply matrix‐vector multiplication a few times.
19
Matrix Multiplication
Examples:
20
Properties of Matrix Multiplication
(AB) C = A (BC)
A (B + C) = AB + AC
A (sB) = sAB, where s is a scalar.
(AB)T = BT AT
But:
21
Example:
Outline
Matrix Algebra
Linear Transformations
Multiple Transformations
OpenGL Geometry Transformations
The Viewing Transformation
22
Linear Transformations
A linear transformation L of vectors is just a mapping from v
to L(v) that satisfies the following properties:
We can use matrices to express linear transformations of
points:
23
Notational Convention
Consider the point P in frame
We will use M to mean “transformed”
The point is transformed with respect to the basis
that appears immediately to the left of the
transformation
24
Translations
glTranslatef(dx, dy, dz);
25
Translations
We have already see how points can be displaced:
For every translation, there exists an inverse function
which undoes the translation:
There also exists a special translation, called the
identity, that leaves every point unchanged:
26
Groups and Composition
For translations:
There exists an inverse mapping for each function
There exists an identity mapping
When these conditions are met by any class of functions, that
class is closed under composition
i.e., any series of translations can be composed to a single
translation with matrix multiplication
Mathematically speaking, translations form an algebraic group
27
Rotations
Rotation about the origin
glRotatef(theta, vx, vy, vz);
theta in degrees, (vx, vy, vz) define axis of rotation
28
Rotations
Counter‐clockwise rotation by
Rotation about the x- and y-axis:
29
about the z-axis:
Orthonormal Matrices
The rotation matrix M has certain properties:
The norm of each row/column is one:
The rows/columns are orthogonal:
We say that rotation matrices are orthonormal.
The inverse of an orthonormal matrix is its transpose
30
Rotation about an Axis
• Rotation about an arbitrary
unit vector k = [kx, ky, kz]
(Rodrigues Formula):
31
Rigid Body Transformations
The union of translation and rotation functions defines the
Euclidean group, also known as rigid body transformations
Properties of rigid body transformations:
32
They preserve distances
They preserve angles
Scaling
Scaling about the origin:
glScalef( sx, sy, sz);
Each vertex is moved:
33
sx times farther from the origin in x‐direction
sy times farther from the origin in y‐direction
sz times farther from the origin in z‐direction
Uniform Scaling
Uniform scaling by:
34
Reflection about X and Y
Reflection about x-axis:
Reflection about y-axis:
Reflection about x- and y-axis:
35
Similarity Transformations
Add reflections and uniform scaling to the rigid body
transformations
Properties of similarity transformations:
36
Angles are preserved
Distances between points are changed by a fixed ratio
Maintains a “similar” shape (similar triangles, circles map to
circles, etc.)
Non‐Uniform Scaling
An unbalanced scaling distorts shape:
37
Skews or Shears
Along x:
Shears matrices have a determinant of 1:
38
Along y:
The area of the sheared figure stays the same.
3D Shears
Shears along different planes:
along y-z plane, along x-z plane, along x-y plane
Shears parallel to different axis:
along x-axis,
39
along y-axis,
along z-axis
No OpenGL statement: we can load and multiply by
arbitrary matrices
glLoadMatrixf(m)
glMultMatrixf(m)
The matrix m is a one dimension array of 16 elements
which are the components of the desired 4 x 4 matrix
stored by columns
In glMultMatrixf, m multiplies the existing matrix on
the right
Matrix Stacks
In many situations we want to save transformation
matrices for use later
Traversing hierarchical data structures
Avoiding state changes when executing display lists
OpenGL maintains stacks for each type of matrix
Access present type (as set by glMatrixMode) by
glPushMatrix()
glPopMatrix()
Affine Transformations
Affine transformations add non-uniform scales and
shears to the similarity transformations
Properties of affine transformations:
They preserve our selected plane (sometimes called the
affine plane)
They preserve parallel lines
Affine transformations are what we will mostly deal
with
Are there other linear transformations?
42
Projective Transformation
The most general linear transformation that can be
applied to 2D points
There is something different about this group of
Transformations
43
Types of Transformations
Rigid Body (preserve distances)
Similarity (preserve angles)
Reflections
Uniform scale
Affine (preserve parallel lines)
Translation and rotations
Non-uniform scales
Shears
Projective (lines remain lines)
Non-linear (lines become curves)
44
Twists, bends, warps, morphs, ...
Outline
Matrix Algebra
Linear Transformations
Multiple Transformations
OpenGL Geometry Transformations
45
Multiple Transformations
It is quite frequent that we want to apply more than one
transformation.
Example:
Translate by vector t.
Rotate by degrees about the origin.
If we call these transformations T and R, and the resulting
transformation Q, we get:
46
Combined Matrix Expression
Each transformation is expressed in matrix form:
We can compute the combined matrix as follows:
The matrices appear in reverse order of how the
transformations are applied
47
Matrix Multiplication
The new, combined matrix is:
Again: This means we are performing the translation with
MT first, followed by the rotation with MR
The order matters AB is unequal to BA
48
The Order Matters
49
2D Rotation about a Point
1.
2.
3.
50
Translate by t = [‐h, ‐k]
Rotate CCW around origin by
Translate by t’ = [h, k]
.
2D Rotation about a Point
Writing the composite matrix:
51
Two Points of View
1.
Each step is a change of coordinates:
2.
Each step is a change of frames:
52
Outline
Appendix: Matrix Algebra
Linear Transformations
Multiple Transformations
OpenGL Geometry Transformations
53
Scenes, Actors, Cameras
Use an analogy to classical theatre or photography
Virtual world is called a scene
We call objects in the scene actors
A camera specifies our viewing position and certain
viewing parameters (focal length, image size, etc.)
Use 3D affine transformations to position and move
actors and cameras in the scene
54
The Scene
55
World, Object, Camera Frames
Use the global world coordinates
to place actors and
cameras within the scene
Define points (vertices) of objects in some convenient
local object coordinates oT
Define eye / camera coordinates for the camera
56
There could be more than one camera in the scene
OpenGL Coordinate Spaces
These coordinate spaces are connected by
transformations as follows:
57
Modeling Transformation
The modeling transformation orients / places objects
within the world space
58
Viewing Transformation
The viewing transformation maps points from world
space into eye space
59
Projection Transformation
The projection transformation maps the viewing frustum to
clip space, a cube that extends from -1 to 1 in x, y, and z
60
OpenGL Coordinate Spaces
Eye
World
Screen (3D)
Clip
61
Why does OpenGL do this?
Normalization allows for a single pipeline for both
perspective and orthogonal viewing
We stay in four dimensional homogeneous coordinates as
long as possible to retain three dimensional information
needed for hidden‐surface removal and shading
We simplify clipping
62
Transforming Normals
What happens to normals under affine transformations?
The normal to a surface is a vector that is orthogonal to the
tangent plane.
The tangent plane is the plane of vectors that are defined by
subtracting nearby surface points.
Or:
63
Transforming Normals
Suppose we transform all points with the affine
matrix A.
What vector remains orthogonal to the tangent
vector?
Or:
64
Transforming Normals
So the coordinates of the normal are transformed
using the inverse transpose of the affine matrix A
If A is a rotation, then the inverse transpose is the
same matrix A
If A is a diagonal matrix (non-uniform or uniform
scaling), then its inverse transpose is the same as its
inverse A-1
In OpenGL, we simply transform the normals with
the inverse transpose of the modelview matrix
65
The end
Questions and answers
66