670 likes | 836 Views
Transformations. Dr. Amy Zhang. Reading. • Hill, Chapter 4, Section 4.5 • Hill, Chapter 5. Vectors and Points Recap. Vectors, basis, frames, and points:. Geometric Transformations. Functions to map points from one place to another Geometric transformations can be applied to:
E N D
Transformations Dr. Amy Zhang
Reading • • Hill, Chapter 4, Section 4.5 • • Hill, Chapter 5
Vectors and Points Recap • Vectors, basis, frames, and points:
Geometric Transformations • Functions to map points from one place to another • Geometric transformations can be applied to: • 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
Outline • Matrix Algebra * • Linear Transformations • Multiple Transformations • OpenGL Geometry Transformations
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. • 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:
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.
Transpose of a Matrix • The transpose of A is written as AT. • ATis formed by interchanging rows and columns of matrix A. • The transpose of a row vector is a column vector.
Addition and Subtraction • 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:
Matrix x Vector Multiplication • If v is a column vector, M goes on the left: • If v is a row vector, MTgoes to the right: • We will use column vectors.
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.
Matrix x Column Vector • The product Mv is a linear combination of the columns:
Examples • Compute the matrix‐vector product:
Matrix Multiplication • Just apply matrix‐vector multiplication a few times. • Remember: the new vector ( ) is a linear combination of columns.
Matrix Multiplication • Examples:
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: • Example:
Outline • Matrix Algebra • Linear Transformations • Multiple Transformations • OpenGL Geometry Transformations • The Viewing Transformation
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:
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
Translations glTranslatef(dx, dy, dz);
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:
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
Rotations • Rotation about the origin glRotatef(theta, vx, vy, vz); theta in degrees, (vx, vy, vz) define axis of rotation
Rotations • Counter‐clockwise rotation by about the z-axis: • Rotation about the x- and y-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
Rotation about an Axis • • Rotation about an arbitrary unit vector k = [kx, ky, kz] (Rodrigues Formula):
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: • They preserve distances • They preserve angles
Scaling • Scaling about the origin: glScalef( sx, sy, sz); • Each vertex is moved: • 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:
Reflection about X and Y • Reflection about x-axis: • Reflection about y-axis: • Reflection about x- and y-axis:
Similarity Transformations • Add reflections and uniform scaling to the rigid body transformations • Properties of similarity transformations: • 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:
Skews or Shears • Along x: Along y: • Shears matrices have a determinant of 1: • 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, 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?
Projective Transformation • The most general linear transformation that can be applied to 2D points • There is something different about this group of Transformations
Types of Transformations • Rigid Body (preserve distances) • Translation and rotations • Similarity (preserve angles) • Reflections • Uniform scale • Affine (preserve parallel lines) • Non-uniform scales • Shears • Projective (lines remain lines) • Non-linear (lines become curves) • Twists, bends, warps, morphs, ...
Outline • Matrix Algebra • Linear Transformations • Multiple Transformations • OpenGL Geometry Transformations
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:
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
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
2D Rotation about a Point • Translate by t = [‐h, ‐k] • Rotate CCW around origin by . • Translate by t’ = [h, k]