Module trafo
: Linear transformations¶
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.
Class trafo
¶
The trafo
class represents a general linear transformation, which is defined
for a vector \(\vec{x}\) as
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}\).
-
class
trafo.
trafo
(matrix=1, 0, 0, 1, vector=0, 0)¶ create new
trafo
instance with transformationmatrix
andvector
-
trafo.
apply
(x, y)¶ apply
trafo
to point vector \((\mathtt{x}, \mathtt{y})\).
-
trafo.
inverse
()¶ returns inverse transformation of
trafo
.
-
trafo.
mirrored
(angle)¶ returns
trafo
followed by mirroring at line through \((0,0)\) with directionangle
in degrees.
-
trafo.
rotated
(angle, x=None, y=None)¶ returns
trafo
followed by rotation byangle
degrees around point \((\mathtt{x}, \mathtt{y})\), or \((0,0)\), if not given.
-
trafo.
scaled
(sx, sy=None, x=None, y=None)¶ returns
trafo
followed by scaling with scaling factorsx
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.
-
trafo.
slanted
(a, angle=0, x=None, y=None)¶ returns
trafo
followed by slant byangle
around point \((\mathtt{x}, \mathtt{y})\), or \((0,0)\), if not given.
-
trafo.
translated
(x, y)¶ returns
trafo
followed by translation by vector \((\mathtt{x}, \mathtt{y})\).
Subclasses of trafo
¶
The trafo
module provides a number of subclasses of the trafo
class,
each of which corresponds to one trafo
method.
-
class
trafo.
mirror
(angle)¶ mirroring at line through \((0,0)\) with direction
angle
in degrees.
-
class
trafo.
rotate
(angle, x=None, y=None)¶ rotation by
angle
degrees around point \((\mathtt{x}, \mathtt{y})\), or \((0,0)\), if not given.
-
class
trafo.
scale
(sx, sy=None, x=None, y=None)¶ 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.
-
class
trafo.
slant
(a, angle=0, x=None, y=None)¶ slant by
angle
around point \((\mathtt{x}, \mathtt{y})\), or \((0,0)\), if not given.
-
class
trafo.
translate
(x, y)¶ translation by vector \((\mathtt{x}, \mathtt{y})\).