# Transformation Matrices

## Prerequisites

### Transformation Matrices

#### Introduction

• In previous articles we have seen that we can multiply two matrices together to produce a third matrix.
• We have also seen that a vector is a special kind of matrix with only one row or column.
• A transformation matrix is a matrix that can be used to multiply a vector to produce a vector of the same size.
• By choosing the values in our matrix we can control how the vector is transformed.

#### Example

• Let's start with the 2-dimensional vector:
• If we multiply it by a 2x2 matrix then we will get a vector which is also 2-dimensional:
• By choosing different values for our matrix we can transform the vector in different ways.

#### Identity Matrix

• If we choose an identity matrix as our transformation matrix then the output will equal the original vector:

#### Scaling Matrix

• If we want to scale a vector then we can multiply each component by a number:

#### Shearing Matrix

• Sometimes we want to slant our object:
• In this example, the slant is parallel to the x axis:
• x is offset by a function of y (the offset gets larger as y grows).
• y remains unchanged.
>

#### Rotation Matrix

• To rotate a point anti-clockwise around the origin we use the following equation:
• This can be converted to a matrix transformation:
• If we want to perform a clockwise rotation then we negate the matrix: hint:

#### Translation Matrix

• Unfortunately it isn't possible define a matrix that translates a vector such as:
• However, if we extend our vector by 1 dimension: and extend our transformation matrix by 1 row and 1 column: Then our new vector will be:
• We can use the new e and f parameters of our matrix to translate our vector:

#### Affine Transformations

• As part of our definition of a translation matrix we:
• Extended the vector by 1 dimension
• This converted it from a euclidean coordinate into a homogeneous coordinate.
• Extended the transformation matrix by 1 row and 1 column
• This converted it from a linear transformation into an affine transformation.
• Each of our transformations can be rewritten as affine transformations:
• Identity:
• Scaling:
• Shearing:
• Rotation (anti-clockwise):
• Translation:

#### Combining Transformations

• The true power of transformation matrices comes from their ability to be conbined.
• For example, if we want to translate and scale a vector then we can use:
• Or more generally, two transformation matrices can be combined into one by multiplying them:

#### Order of Transformations

• If we define a scaling matrix as:
• and a translation matrix as:
• then we can combine them in two different ways:
• The translation first, and then the scaling:
• The scale first, and then the translation (in scaled space):
• The order of the translations goes from right to left:
• if we have a transformation: T1T2T3
• T3 would be applied first, then T2, and finally T1.

#### Extending to 3D

• Extending to 3D is a simple case of defining a 4D vector:
• And a 4D transformation matrix:
• We can redefine each of our 2D transformations in 3D form:
• Identity:
• Scaling:
• Shearing:
• Rotation (around each axis):
• Translation: