A library for performing 2D matrix transformations. It
is used primarily with the groupTransform function from
Collage and allows you to do things
like rotation, scaling, translation, shearing, and reflection.
Note that all the matrices in this library are 3x3 matrices of homogeneous
coordinates, used for affine transformations. Since the bottom row as
always 0 0 1 in these matrices, it is omitted in the diagrams below.
Create an identity transform. Transforming by the identity does not change anything, but it can come in handy as a default or base case.
/ 1 0 0 \
\ 0 1 0 /Create a transformation matrix. This lets you create transforms such as scales, shears, reflections, and translations.
matrix a b c d x y
/ a b x \
\ c d y /Note that x and y are the translation values.
Create a rotation matrix. Given an angle t, it creates a counterclockwise rotation matrix:
rotation t
/ cos t -sin t 0 \
\ sin t cos t 0 /Create a transformation matrix for translation.
translation x y
/ 1 0 x \
\ 0 1 y /Creates a transformation matrix for scaling by a all directions.
scale s
/ s 0 0 \
\ 0 s 0 /Create a transformation for horizontal scaling.
Create a transformation for vertical scaling.
Multiply two transforms together.
multiply m n
/ ma mb mx \ / na nb nx \
| mc md my | . | nc nd ny |
\ 0 0 1 / \ 0 0 1 /
A matrix representing a 2D transformation.