14.1 Class trafo

The trafo class represents a general linear transformation, which is defined for a vector $\vec{x}$ as

\begin{displaymath}
\vec{x}' = \mathsf{A}\, \vec{x} + \vec{b}\ ,
\end{displaymath}

where $\mathsf{A}$ is the transformation matrix and $\vec{b}$ the translation vector. The transformation matrix must not be singular, i.e. we require $\det \mathsf{A} \ne 0$.

Multiple trafo instances can be multiplied, corresponding to a consecutive application of the respective transformation. Note that trafo1*trafo2 means that trafo1 is applied after trafo2, i.e. the new transformation is given by $\mathsf{A} = \mathsf{A}_1 \mathsf{A}_2$ and $\vec{b} = \mathsf{A}_1 \vec{b}_2 + \vec{b}_1$. Use the trafo methods described below, if you prefer thinking the other way round. The inverse of a transformation can be obtained via the trafo method inverse(), defined by the inverse $\mathsf{A}^{-1}$ of the transformation matrix and the translation vector $-\mathsf{A}^{-1}\vec{b}$.

The methods of the trafo class are summarized in the following table.


=.8 trafo method =1.2function
=.8 __init__(matrix=((1,0),(0,1)),
vector=(0,0)):
=1.2create new trafo instance with transformation matrix and vector.
=.8 apply(x, y) =1.2apply trafo to point vector $(\mathtt{x}, \mathtt{y})$.
=.8 inverse() =1.2returns inverse transformation of trafo.
=.8 mirrored(angle) =1.2returns trafo followed by mirroring at line through $(0, 0)$ with direction angle in degrees.
=.8 rotated(angle,
x=None, y=None)
=1.2 returns trafo followed by rotation by angle degrees around point $(\mathtt{x}, \mathtt{y})$, or $(0, 0)$, if not given.
=.8 scaled(sx, sy=None,
x=None, y=None)
=1.2 returns trafo followed by scaling with scaling factor sx in $x$-direction, sy in $y$-direction ( $\mathtt{sy}=\mathtt{sx}$, if not given) with scaling center $(\mathtt{x}, \mathtt{y})$, or $(0, 0)$, if not given.
=.8 translated(x, y) =1.2returns trafo followed by translation by vector $(\mathtt{x}, \mathtt{y})$.
=.8 slanted(a, angle=0, x=None, y=None) =1.2returns trafo followed by XXX