# Difference between revisions of "Transformations"

A WASSERMANN (talk | contribs) |
A WASSERMANN (talk | contribs) |
||

Line 1: | Line 1: | ||

In JSXGraph it is possible to apply plane projective transformations to point elements. A projective transformation is a multiplication by a 3x3 matrix to the homogeneous coordinates of a point. To make life easier some standard transformation are predefined. | In JSXGraph it is possible to apply plane projective transformations to point elements. A projective transformation is a multiplication by a 3x3 matrix to the homogeneous coordinates of a point. To make life easier some standard transformation are predefined. | ||

− | + | ===Available transformation types=== | |

* Translation | * Translation | ||

* Scaling | * Scaling | ||

Line 8: | Line 8: | ||

* Generic transformation | * Generic transformation | ||

− | + | ===Using transformations=== | |

There are three possibilities to apply transformations: | There are three possibilities to apply transformations: | ||

− | + | ====One point is the result of applying a transformation to another point.==== | |

First, the transformation has to be time, for example | First, the transformation has to be time, for example | ||

<source lang="javascript"> | <source lang="javascript"> | ||

Line 27: | Line 27: | ||

</source> | </source> | ||

− | + | ====One-time application of a transformation to a point.==== | |

Here, we start with the same setting as above: There are points ''p1'', ''p2'' and the transformation ''t''. | Here, we start with the same setting as above: There are points ''p1'', ''p2'' and the transformation ''t''. | ||

But here, ''p2'' is rotated once. | But here, ''p2'' is rotated once. |

## Revision as of 01:26, 15 February 2010

In JSXGraph it is possible to apply plane projective transformations to point elements. A projective transformation is a multiplication by a 3x3 matrix to the homogeneous coordinates of a point. To make life easier some standard transformation are predefined.

## Contents

### Available transformation types

- Translation
- Scaling
- Reflection
- Rotation
- Shear transformation
- Generic transformation

### Using transformations

There are three possibilities to apply transformations:

#### One point is the result of applying a transformation to another point.

First, the transformation has to be time, for example

```
var p1 = board.create('point', [1,1], {style:6, name:'C'});
var t = board.create('transform', [Math.PI/3,p1], {type:'rotate'}); // angle, rotation center
```

The transformation *t* is the rotation by 60 degrees around the point p1. Alternatively, the rotation can also be defined by giving the name of the rotation center.

```
var p1 = board.create('point', [1,1], {style:6, name:'C'});
var t = board.create('transform', [Math.PI/3,'C'], {type:'rotate'}); // angle, rotation center
```

Now, two more points *p2* and *p3* are created. *p3* has the coordinates of *p2* rotated by 60 degrees around *p1*.

```
var p2 = board.create('point', [3,1]);
var p3 = board.create('point', [p2,t]);
```

#### One-time application of a transformation to a point.

Here, we start with the same setting as above: There are points *p1*, *p2* and the transformation *t*.
But here, *p2* is rotated once.

```
var p1 = board.create('point', [1,1], {style:6, name:'C'});
var t = board.create('transform', [Math.PI/3,'C'], {type:'rotate'}); // angle, rotation center
var p2 = board.create('point', [3,1]);
t.applyOnce(p2);
```

If there are more than one point to be rotated, an array can be supplied

```
var p1 = board.create('point', [1,1], {style:6, name:'C'});
var t = board.create('transform', [Math.PI/3,'C'], {type:'rotate'}); // angle, rotation center
var p2 = board.create('point', [3,1]);
var p3 = board.create('point', [4,1]);
t.applyOnce([p2,p3]);
```

- Points may have