manpagez: man pages & more
info asymptote
Home | html | info | man
 [ << ] [ < ] [ 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 `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 by `y` 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 about `z`;

`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.

```© manpagez.com 2000-2018