PrevUpNext devguide-6.htmlRect Objects
devguide-4.htmlCoordinate Systems
devguide-8.htmlCurve Objects
Transformation Objects
A transformation object, a trafo object or trafo for short, represents
an affine 2D transformation. Such a transformation is given by 6
numbers: 
m11, m21, m21, m22, v1 and
v2. These coefficients are given in the same order as for a
PostScript transformation matrix.
To apply a trafo to an object you can simple call the trafo with that
object as argument. For details, see the 
#N9section
``Operators''
 below.
Trafo objects are immutable.
If such a transformation T is applied to the point (x,
y) you get
            / x \   / m11 m12 \ / x \   / v1 \
        T * |   | = |         | |   | + |    |
            \ y /   \ m21 m22 / \ y /   \ v2 /
or, in homogeneous coordinates:
            / x \   / m11 m12 v1 \ / x \
            |   |   |            | |   |
        T * | y | = | m21 m22 v2 | | y |
            |   |   |            | |   |
            \ 1 /   \ 0   0   1  / \ 1 /
Constructors
The following functions create trafo objects:
Trafo(m11, m21, m21, m22, v1, v2)The generic constructor: return the transformation given by the
coordinates 
m11, m21, m21, m22, v1and 
v2. These coefficients are given in the same order as
for a PostScript transformation matrix.
Scale(factorx[, factory])Return a trafo object for a scaling by the factors factorx(in x-direction) and 
factory (in y-direction). If omitted,
factory defaults to the value of factorx.
Equivalent to Trafo(factorx, 0, 0, factory, 0, 0).
Translation(offset)Translation(offset_x, offset_y)Return a trafo object for a translation by offset (a devguide-5.html#N11PointSpec ) or (offset_x, offset_y).
Equivalent to 
Trafo(1, 0, 0, 1, offset_x,
offset_y).
Rotation(angle[, center])Rotation(angle[, center_x, center_y])Return a trafo object for a rotation through the angle
angle (counter clockwise in radians) about the center
point 
center or (center_x, center_y).
center must be a devguide-5.html#N11PointSpec . If
center is omitted it defaults to the origin.
Equivalent to
	s = sin(angle);
	c = cos(angle);
	offx = cx - c * center_x + s * center_y;
	offy = cy - s * center_x - c * center_y;
	Trafo(c, s, -s, c, offx, offy);
	
Attributes
A trafo object has six (read only) attributes:
m11, m21, m12, m22v1, v2The coefficients of the trafo as python floats.
Methods
DocToWin(point)DocToWin(x, y)Transform the point and return the result as a tuple of ints.
point is a devguide-5.html#N11PointSpec . This function
is used to transform document coordinates to window coordinates,
hence the name. (Normally, if you want to transform a point, you
#N9call the trafo object directly )
DTransform(point)DTransform(x, y)Treat the point as a vector and transform it, that is, don't add
v1 and v2. point is a devguide-5.html#N11PointSpec .
inverse()Return the inverse transformation of self. If self cannot be
inverted raise the 
SingularMatrix exception.
coeff()Return the coefficients of the trafo as a tuple (m11,
m21, m21, m22, v1, v2).
matrix()Return the matrix coefficients of the trafo (m11, ...,
m22) as a tuple. The same as coeff()[:4].
offset()Return the translation coefficients as a point object.
Operators
Since a transformation is a mapping in the mathematical sense, it is
convenient to make trafo objects callable, so you can treat them like
functions or methods. Depending on the type of the argument the results
are different:
trafo(point)trafo(x, y)Return the transformed point. Point can be any devguide-5.html#N11PointSpec .
trafo(othertrafo)Return the composition of both trafos.
trafo(rect)Return the smallest devguide-6.htmlrect object  that
contains the transformed corners of the rect object 
rect.
InfinityRect and EmptyRect are returned unchanged.
Constants
IdentityThe identity transformation (Trafo(1, 0, 0, 1, 0, 0))
IdentityMatrixA tuple containing the coefficients of the identity matrix. The
same as 
Identity.matrix()
TrafoTypeThe trafo type object.
SingularMatrixException raised by the inverse() method.
devguide-6.htmlRect Objects
devguide-4.htmlCoordinate Systems
devguide-8.htmlCurve Objects
PrevUpNext