[ << ]  [ < ]  [ 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 builtin 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
x
in the x direction; transform yscale(real y);

scales by
y
in the y direction; transform scale(real s);

scale by
s
in both x and y directions; transform scale(real x, real y);

scale by
x
in the x direction and byy
in the y direction; transform slant(real s);

maps
(x,y)
–>(x+s*y,y)
; transform rotate(real angle, pair z=(0,0));
rotates by
angle
in degrees aboutz
;transform reflect(pair a, pair b);

reflects about the line
ab
.
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.