fonttools/Documentation/fontToolsDocs/fontTools.misc.transform.html
Erik van Blokland 3646055ea2 initial import
git-svn-id: http://svn.robofab.com/trunk@1 b5fa9d6c-a76f-4ffd-b3cb-f825fc41095c
2008-01-07 17:40:34 +00:00

285 lines
25 KiB
HTML

<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module fontTools.misc.transform</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="fontTools.html"><font color="#ffffff">fontTools</font></a>.<a href="fontTools.misc.html"><font color="#ffffff">misc</font></a>.transform</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/code/fontTools/Lib/fontTools/misc/transform.py">/code/fontTools/Lib/fontTools/misc/transform.py</a></font></td></tr></table>
<p><tt>Affine&nbsp;2D&nbsp;transformation&nbsp;matrix&nbsp;class.<br>
&nbsp;<br>
The&nbsp;<a href="#Transform">Transform</a>&nbsp;class&nbsp;implements&nbsp;various&nbsp;transformation&nbsp;matrix&nbsp;operations,<br>
both&nbsp;on&nbsp;the&nbsp;matrix&nbsp;itself,&nbsp;as&nbsp;well&nbsp;as&nbsp;on&nbsp;2D&nbsp;coordinates.<br>
&nbsp;<br>
<a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;effectively&nbsp;immutable:&nbsp;all&nbsp;methods&nbsp;that&nbsp;operate&nbsp;on&nbsp;the<br>
transformation&nbsp;itself&nbsp;always&nbsp;return&nbsp;a&nbsp;new&nbsp;instance.&nbsp;This&nbsp;has&nbsp;as&nbsp;the<br>
interesting&nbsp;side&nbsp;effect&nbsp;that&nbsp;<a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;hashable,&nbsp;ie.&nbsp;they&nbsp;can&nbsp;be<br>
used&nbsp;as&nbsp;dictionary&nbsp;keys.<br>
&nbsp;<br>
This&nbsp;module&nbsp;exports&nbsp;the&nbsp;following&nbsp;symbols:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Transform">Transform</a>&nbsp;--&nbsp;this&nbsp;is&nbsp;the&nbsp;main&nbsp;class<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Identity&nbsp;&nbsp;--&nbsp;<a href="#Transform">Transform</a>&nbsp;instance&nbsp;set&nbsp;to&nbsp;the&nbsp;identity&nbsp;transformation<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Offset&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Convenience&nbsp;function&nbsp;that&nbsp;returns&nbsp;a&nbsp;translating&nbsp;transformation<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scale&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Convenience&nbsp;function&nbsp;that&nbsp;returns&nbsp;a&nbsp;scaling&nbsp;transformation<br>
&nbsp;<br>
Examples:<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>(2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;0,&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(200,&nbsp;300)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Scale">Scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(200,&nbsp;300)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((0,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0,&nbsp;0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Offset">Offset</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(102,&nbsp;103)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoint((0,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;t.scale(0.5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(52.0,&nbsp;53.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;import&nbsp;math<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t3&nbsp;=&nbsp;t2.rotate(math.pi&nbsp;/&nbsp;2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t3.transformPoint((0,&nbsp;0))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2.0,&nbsp;3.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t3.transformPoint((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(-48.0,&nbsp;53.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;Identity.scale(0.5).translate(100,&nbsp;200).skew(0.1,&nbsp;0.2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.transformPoints([(0,&nbsp;0),&nbsp;(1,&nbsp;1),&nbsp;(100,&nbsp;100)])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(50.0,&nbsp;100.0),&nbsp;(50.550167336042726,&nbsp;100.60135501775433),&nbsp;(105.01673360427253,&nbsp;160.13550177543362)]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="fontTools.misc.transform.html#Transform">Transform</a>
</font></dt></dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="Transform">class <strong>Transform</strong></a></font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
<td colspan=2><tt>2x2&nbsp;transformation&nbsp;matrix&nbsp;plus&nbsp;offset,&nbsp;a.k.a.&nbsp;Affine&nbsp;transform.<br>
<a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;immutable:&nbsp;all&nbsp;transforming&nbsp;methods,&nbsp;eg.<br>
<a href="#Transform-rotate">rotate</a>(),&nbsp;return&nbsp;a&nbsp;new&nbsp;<a href="#Transform">Transform</a>&nbsp;instance.<br>
&nbsp;<br>
Examples:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[2&nbsp;0&nbsp;0&nbsp;2&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(2.5,&nbsp;5.5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[2.5&nbsp;0.0&nbsp;0.0&nbsp;5.5&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(2,&nbsp;3).<a href="#Transform-transformPoint">transformPoint</a>((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(200,&nbsp;300)<br>&nbsp;</tt></td></tr>
<tr><td>&nbsp;</td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Transform-__cmp__"><strong>__cmp__</strong></a>(self, other)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;comparable:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(2,&nbsp;3).<a href="#Transform-translate">translate</a>(4,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(8,&nbsp;18).<a href="#Transform-scale">scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;==&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;<br>
&nbsp;<br>
But&nbsp;beware&nbsp;of&nbsp;floating&nbsp;point&nbsp;rounding&nbsp;errors:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3).<a href="#Transform-translate">translate</a>(0.4,&nbsp;0.6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(0.08,&nbsp;0.18).<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;==&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__getitem__"><strong>__getitem__</strong></a>(self, index)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;also&nbsp;behave&nbsp;like&nbsp;sequences&nbsp;of&nbsp;length&nbsp;6:<br>
&gt;&gt;&gt;&nbsp;list(Identity)<br>
[1,&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;0,&nbsp;0]<br>
&gt;&gt;&gt;&nbsp;tuple(Identity)<br>
(1,&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;0,&nbsp;0)<br>
&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__getslice__"><strong>__getslice__</strong></a>(self, i, j)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;also&nbsp;behave&nbsp;like&nbsp;sequences&nbsp;and&nbsp;even&nbsp;support<br>
slicing:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Offset">Offset</a>(100,&nbsp;200)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;100&nbsp;200]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t[4:]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(100,&nbsp;200)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__hash__"><strong>__hash__</strong></a>(self)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;are&nbsp;hashable,&nbsp;meaning&nbsp;you&nbsp;can&nbsp;use&nbsp;them&nbsp;as<br>
keys&nbsp;in&nbsp;dictionaries:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d&nbsp;=&nbsp;{<a href="#-Scale">Scale</a>(12,&nbsp;13):&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&lt;<a href="#Transform">Transform</a>&nbsp;[12&nbsp;0&nbsp;0&nbsp;13&nbsp;0&nbsp;0]&gt;:&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;<br>
&nbsp;<br>
But&nbsp;again,&nbsp;beware&nbsp;of&nbsp;floating&nbsp;point&nbsp;rounding&nbsp;errors:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3).<a href="#Transform-translate">translate</a>(0.4,&nbsp;0.6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(0.08,&nbsp;0.18).<a href="#Transform-scale">scale</a>(0.2,&nbsp;0.3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t2<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d&nbsp;=&nbsp;{t1:&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;:&nbsp;None}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;d[t2]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Traceback&nbsp;(most&nbsp;recent&nbsp;call&nbsp;last):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;"&lt;stdin&gt;",&nbsp;line&nbsp;1,&nbsp;in&nbsp;?<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KeyError:&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0.2&nbsp;0.0&nbsp;0.0&nbsp;0.3&nbsp;0.08&nbsp;0.18]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__init__"><strong>__init__</strong></a>(self, xx<font color="#909090">=1</font>, xy<font color="#909090">=0</font>, yx<font color="#909090">=0</font>, yy<font color="#909090">=1</font>, dx<font color="#909090">=0</font>, dy<font color="#909090">=0</font>)</dt><dd><tt><a href="#Transform">Transform</a>'s&nbsp;constructor&nbsp;takes&nbsp;six&nbsp;arguments,&nbsp;all&nbsp;of&nbsp;which&nbsp;are<br>
optional,&nbsp;and&nbsp;can&nbsp;be&nbsp;used&nbsp;as&nbsp;keyword&nbsp;arguments:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(12)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[12&nbsp;0&nbsp;0&nbsp;1&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(dx=12)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;12&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(yx=12)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;12&nbsp;1&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__len__"><strong>__len__</strong></a>(self)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;instances&nbsp;also&nbsp;behave&nbsp;like&nbsp;sequences&nbsp;of&nbsp;length&nbsp;6:<br>
&gt;&gt;&gt;&nbsp;len(Identity)<br>
6<br>
&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="Transform-inverse"><strong>inverse</strong></a>(self)</dt><dd><tt>Return&nbsp;the&nbsp;inverse&nbsp;transformation.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;Identity.<a href="#Transform-translate">translate</a>(2,&nbsp;3).<a href="#Transform-scale">scale</a>(4,&nbsp;5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transformPoint">transformPoint</a>((10,&nbsp;20))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(42,&nbsp;103)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;it&nbsp;=&nbsp;t.<a href="#Transform-inverse">inverse</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;it.<a href="#Transform-transformPoint">transformPoint</a>((42,&nbsp;103))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(10.0,&nbsp;20.0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-reverseTransform"><strong>reverseTransform</strong></a>(self, other)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;which&nbsp;is&nbsp;the&nbsp;other&nbsp;transformation<br>
transformed&nbsp;by&nbsp;self.&nbsp;<a href="#Transform-reverseTransform">reverseTransform</a>(other)&nbsp;is&nbsp;equivalent&nbsp;to<br>
other.<a href="#Transform-transform">transform</a>(self).<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>(2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;1,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-reverseTransform">reverseTransform</a>((4,&nbsp;3,&nbsp;2,&nbsp;1,&nbsp;5,&nbsp;6))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[8&nbsp;6&nbsp;6&nbsp;3&nbsp;21&nbsp;15]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#Transform">Transform</a>(4,&nbsp;3,&nbsp;2,&nbsp;1,&nbsp;5,&nbsp;6).<a href="#Transform-transform">transform</a>((2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;1,&nbsp;6))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[8&nbsp;6&nbsp;6&nbsp;3&nbsp;21&nbsp;15]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-rotate"><strong>rotate</strong></a>(self, angle)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;rotated&nbsp;by&nbsp;'angle'&nbsp;(radians).<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;import&nbsp;math<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-rotate">rotate</a>(math.pi&nbsp;/&nbsp;2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[0&nbsp;1&nbsp;-1&nbsp;0&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-scale"><strong>scale</strong></a>(self, x<font color="#909090">=1</font>, y<font color="#909090">=None</font>)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;scaled&nbsp;by&nbsp;x,&nbsp;y.&nbsp;The&nbsp;'y'&nbsp;argument<br>
may&nbsp;be&nbsp;None,&nbsp;which&nbsp;implies&nbsp;to&nbsp;use&nbsp;the&nbsp;x&nbsp;value&nbsp;for&nbsp;y&nbsp;as&nbsp;well.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[5&nbsp;0&nbsp;0&nbsp;5&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-scale">scale</a>(5,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[5&nbsp;0&nbsp;0&nbsp;6&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-skew"><strong>skew</strong></a>(self, x<font color="#909090">=0</font>, y<font color="#909090">=0</font>)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;skewed&nbsp;by&nbsp;x&nbsp;and&nbsp;y.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;import&nbsp;math<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-skew">skew</a>(math.pi&nbsp;/&nbsp;4)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1.0&nbsp;0.0&nbsp;1.0&nbsp;1.0&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-toPS"><strong>toPS</strong></a>(self)</dt><dd><tt>Return&nbsp;a&nbsp;PostScript&nbsp;representation:<br>
&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;Identity.<a href="#Transform-scale">scale</a>(2,&nbsp;3).<a href="#Transform-translate">translate</a>(4,&nbsp;5)<br>
&gt;&gt;&gt;&nbsp;t.<a href="#Transform-toPS">toPS</a>()<br>
'[2&nbsp;0&nbsp;0&nbsp;3&nbsp;8&nbsp;15]'<br>
&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-transform"><strong>transform</strong></a>(self, other)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;transformed&nbsp;by&nbsp;another<br>
transformation.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>(2,&nbsp;0,&nbsp;0,&nbsp;3,&nbsp;1,&nbsp;6)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transform">transform</a>((4,&nbsp;3,&nbsp;2,&nbsp;1,&nbsp;5,&nbsp;6))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[8&nbsp;9&nbsp;4&nbsp;3&nbsp;11&nbsp;24]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-transformPoint"><strong>transformPoint</strong></a>(self, (x, y))</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;a&nbsp;point.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;t.<a href="#Transform-scale">scale</a>(2.5,&nbsp;5.5)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transformPoint">transformPoint</a>((100,&nbsp;100))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(250.0,&nbsp;550.0)</tt></dd></dl>
<dl><dt><a name="Transform-transformPoints"><strong>transformPoints</strong></a>(self, points)</dt><dd><tt><a href="#Transform">Transform</a>&nbsp;a&nbsp;list&nbsp;of&nbsp;points.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#-Scale">Scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-transformPoints">transformPoints</a>([(0,&nbsp;0),&nbsp;(0,&nbsp;100),&nbsp;(100,&nbsp;100),&nbsp;(100,&nbsp;0)])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(0,&nbsp;0),&nbsp;(0,&nbsp;300),&nbsp;(200,&nbsp;300),&nbsp;(200,&nbsp;0)]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="Transform-translate"><strong>translate</strong></a>(self, x<font color="#909090">=0</font>, y<font color="#909090">=0</font>)</dt><dd><tt>Return&nbsp;a&nbsp;new&nbsp;transformation,&nbsp;translated&nbsp;(offset)&nbsp;by&nbsp;x,&nbsp;y.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t&nbsp;=&nbsp;<a href="#Transform">Transform</a>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;t.<a href="#Transform-translate">translate</a>(20,&nbsp;30)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;20&nbsp;30]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-Offset"><strong>Offset</strong></a>(x<font color="#909090">=0</font>, y<font color="#909090">=0</font>)</dt><dd><tt>Return&nbsp;the&nbsp;identity&nbsp;transformation&nbsp;offset&nbsp;by&nbsp;x,&nbsp;y.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-Offset">Offset</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[1&nbsp;0&nbsp;0&nbsp;1&nbsp;2&nbsp;3]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
<dl><dt><a name="-Scale"><strong>Scale</strong></a>(x, y<font color="#909090">=None</font>)</dt><dd><tt>Return&nbsp;the&nbsp;identity&nbsp;transformation&nbsp;scaled&nbsp;by&nbsp;x,&nbsp;y.&nbsp;The&nbsp;'y'&nbsp;argument<br>
may&nbsp;be&nbsp;None,&nbsp;which&nbsp;implies&nbsp;to&nbsp;use&nbsp;the&nbsp;x&nbsp;value&nbsp;for&nbsp;y&nbsp;as&nbsp;well.<br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;&nbsp;<a href="#-Scale">Scale</a>(2,&nbsp;3)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<a href="#Transform">Transform</a>&nbsp;[2&nbsp;0&nbsp;0&nbsp;3&nbsp;0&nbsp;0]&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt;&gt;</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>Identity</strong> = &lt;Transform [1 0 0 1 0 0]&gt;<br>
<strong>__all__</strong> = ['Transform', 'Identity', 'Offset', 'Scale']</td></tr></table>
</body></html>