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