With the trafo module PyX supports linear transformations, which can then be applied to canvases, Bézier paths and other objects. It consists of the main class trafo representing a general linear transformation and subclasses thereof, which provide special operations like translation, rotation, scaling, and mirroring.
The trafo class represents a general linear transformation, which is defined for a vector \vec{x} as
\vec{x}' = \mathsf{A}\, \vec{x} + \vec{b}\ ,
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}.
create new trafo instance with transformation matrix and vector
apply trafo to point vector (\mathtt{x}, \mathtt{y}).
returns inverse transformation of trafo.
returns trafo followed by mirroring at line through (0,0) with direction angle in degrees.
returns trafo followed by rotation by angle degrees around point (\mathtt{x}, \mathtt{y}), or (0,0), if not given.
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.
returns trafo followed by slant by angle around point (\mathtt{x}, \mathtt{y}), or (0,0), if not given.
returns trafo followed by translation by vector (\mathtt{x}, \mathtt{y}).
The trafo module provides a number of subclasses of the trafo class, each of which corresponds to one trafo method.
mirroring at line through (0,0) with direction angle in degrees.
rotation by angle degrees around point (\mathtt{x}, \mathtt{y}), or (0,0), if not given.
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.
slant by angle around point (\mathtt{x}, \mathtt{y}), or (0,0), if not given.
translation by vector (\mathtt{x}, \mathtt{y}).