| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.4 Transforms
Asymptote makes extensive use of affine transforms. A pair
(x,y) is transformed by the transform
t=(t.x,t.y,t.xx,t.xy,t.yx,t.yy) to (x',y'), where
x' = t.x + t.xx * x + t.xy * y y' = t.y + t.yx * x + t.yy * y
This is equivalent to the PostScript transformation
[t.xx t.yx t.xy t.yy t.x t.y].
Transforms can be applied to pairs, guides, paths, pens, strings,
transforms, frames, and pictures by multiplication (via the binary operator
*) on the left (see circle for an example).
Transforms can be composed with one another and inverted with the
function transform inverse(transform t); they can also be raised to any
integer power with the ^ operator.
The built-in transforms are:
transform identity();-
the identity transform;
transform shift(pair z);-
translates by the pair
z; transform shift(real x, real y);-
translates by the pair
(x,y); transform xscale(real x);-
scales by
xin the x direction; transform yscale(real y);-
scales by
yin the y direction; transform scale(real s);-
scale by
sin both x and y directions; transform scale(real x, real y);-
scale by
xin the x direction and byyin the y direction; transform slant(real s);-
maps
(x,y)–>(x+s*y,y); transform rotate(real angle, pair z=(0,0));rotates by
anglein degrees aboutz;transform reflect(pair a, pair b);-
reflects about the line
a--b.
The implicit initializer for transforms is identity().
The routines shift(transform t) and shiftless(transform t)
return the transforms (t.x,t.y,0,0,0,0) and
(0,0,t.xx,t.xy,t.yx,t.yy) respectively.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on May 24, 2014 using texi2html 5.0.
