3.5 KiB
Transformations
Translation
Translation is done by adding/subtracting the translation distance to either the x or y (or both) component
A translation of (3,2) done on vector u=\begin{pmatrix} u_0\\u_1\end{pmatrix}
u'=\begin{pmatrix} u_0+3\\u_1+2\end{pmatrix}
This can be applied to a triangle, where every vertex is translated by the same amount.
Rotation
Vector v can be rotated by angle \theta radians anticlockwise as follows
rot(v) = \begin{pmatrix}
cos\theta * v_0 - sin\theta * v_1 \\
sin\theta * v_0 - cos\theta * v_1
\end{pmatrix}
We can rotate triangles by rotating each vertex
Scale
The vector v can be scaled by scalar s in each dimension independently
v \cdot s = \begin{pmatrix} v_0 \cdot s_0 \\ v_1\cdot s_1 \end{pmatrix}
We can scale triangles by scaling each of its vertices
Transformation Matrix
Translation
This is where we represent a transformation in the form of a matrix
- The translation matrix, T, which translates by some vector t
= (t_x, t_y, t_z)
T(t) = \begin{pmatrix}
1 \quad 0 \quad 0 \quad t_x \\
0 \quad 1 \quad 0 \quad t_y \\
0 \quad 0 \quad 1 \quad t_z \\
0 \quad 0 \quad 0 \quad 1
\end{pmatrix}
Rotation
- The rotations around each axis by some angle
\thetaare represented as matricesR_x, R_y, R_z - This is in 2 dimensions
Scale
S(t) = \begin{pmatrix}
s_x \quad 0 \quad 0 \quad 0 \\
0 \quad s_y \quad 0 \quad 0 \\
0 \quad 0 \quad s_z \quad 0 \\
0 \quad 0 \quad 0 \quad 1
\end{pmatrix}
Homogeneous Coordinates
- Vector defines a direction or a position
- We can rotate directions and positions
- We can scale directions and positions
- We can only translate positions
A homogeneous vector is p=(p_x, p_y, p_z, p_w)
- Transforming a point
pis done by multiplying the vector (withwset to 1) by the transformation matrixM - To transform vectors the
wmust be set to 1
The translation matrix can be applied to point p by multiplying the point by the matrix
The scale matrix can be applied to a point p by multiplying the point by the matrix
The rotation around x matrix can be applied to a point p by multiplying the point by the matrix
y:
z:
Combining Transformations
For example if point p needs to be scaled by s=(2,1,1) and then translated by t=(1,0,0)
S = \begin{pmatrix}
2 \quad 0 \quad 0 \quad 0 \\
0 \quad 1 \quad 0 \quad 0 \\
0 \quad 0 \quad 1 \quad 0 \\
0 \quad 0 \quad 0 \quad 1
\end{pmatrix}
\\\\
T = \begin{pmatrix}
1 \quad 0 \quad 0 \quad 1 \\
0 \quad 1 \quad 0 \quad 0 \\
0 \quad 0 \quad 1 \quad 0 \\
0 \quad 0 \quad 0 \quad 1
\end{pmatrix}
\\\\
TS = T\times S =
\begin{pmatrix}
2 \quad 0 \quad 0 \quad 1 \\
0 \quad 1 \quad 0 \quad 0 \\
0 \quad 0 \quad 1 \quad 0 \\
0 \quad 0 \quad 0 \quad 1
\end{pmatrix}
Matrix multiplication is read from right to left
The order of the transformations makes a difference and can change the resulting vector for example
ST = S\times T =
\begin{pmatrix}
2 \quad 0 \quad 0 \quad 2 \\
0 \quad 1 \quad 0 \quad 0 \\
0 \quad 0 \quad 1 \quad 0 \\
0 \quad 0 \quad 0 \quad 1
\end{pmatrix}
The difference between translating and scaling vs scaling and translating vector v








