Automatic generation produced by ISE Eiffel

```

Classes
Clusters
Cluster hierarchy
Chart
Relations
Flat contracts
Go to:
class
EV_MODEL_TRANSFORMATION

General
cluster: interface
description:
"An EV_TRANSFORMATION is basicaly a matrix
discribing a projection from one coordinate system
into another with homogeneouse coordinates.
You can use an EV_TRANSFORMATION to change
shape of any transformable EV_FIGURE.

examples:
translating (x, y) to (x + dx, y + dy):

| 1  0  dx |    |x|    |x + dx|
| 0  1  dy |  * |y|  = |y + dy|
| 0  0  1  |    |1|    |  1   |

rotation matrix around (0, 0) for angle:

| cosine angle   -sine angle   0 |
|  sine angle   cosine angle   0 |
|      0             0         1 |

scaling for sx in x direction and sy in y direction:

| sx  0   0 |
|  0 sy   0 |
|  0  0   1 |

This transformations can be combined by just multipling the
matrixes togetter. For example a rotation around (px, py) is
achieved by first translating a point such that px, py is at
(0, 0), then rotating and then translating back:

|1 0 px|   |cosine angle   -sine angle  0|   |1 0 -px|
|0 1 py| * | sine angle   cosine angle  0| * |0 1 -py|
|0 0 1 |   |    0              0        1|   |0 0  1 |

The result matrix is build when calling rotate.

The beauty of the approach is no matter how
complex your transformation is the complexity is allways:
4 multiplications and 4 additions per point (see project)

See the book: Computer Graphics by Foley et all, side 201 for more informations."
create: make_zero, make_id

Ancestors
ANY
DOUBLE_MATH

Queries
arc_cosine (v: REAL_64): REAL_64
arc_sine (v: REAL_64): REAL_64
arc_tangent (v: REAL_64): REAL_64
ceiling (v: REAL_64): REAL_64
cosine (v: REAL_64): REAL_64
dabs (v: REAL_64): REAL_64
Euler: REAL_64
exp (x: REAL_64): REAL_64
floor (v: REAL_64): REAL_64
Height: INTEGER_32
item (row, column: INTEGER_32): REAL_64
log (v: REAL_64): REAL_64
log10 (v: REAL_64): REAL_64
log_2 (v: REAL_64): REAL_64
Pi: REAL_64
Pi_2: REAL_64
Pi_4: REAL_64
product alias "*" (other: [like Current] EV_MODEL_TRANSFORMATION): [like Current] EV_MODEL_TRANSFORMATION
sine (v: REAL_64): REAL_64
sqrt (v: REAL_64): REAL_64
Sqrt2: REAL_64
tangent (v: REAL_64): REAL_64
Width: INTEGER_32

Commands
project (point: EV_COORDINATE)
put (v: [like item] REAL_64; row, column: INTEGER_32)
rotate (an_angle, a_x, a_y: [like item] REAL_64)
scale (a_scale_x, a_scale_y, a_x, a_y, an_angle: [like item] REAL_64)
scale_abs (a_scale_x, a_scale_y, a_x, a_y: [like item] REAL_64)
translate (a_x, a_y: [like item] REAL_64)

Constraints
area not void

Classes
Clusters
Cluster hierarchy
Chart
Relations
Flat contracts
Go to:
```

-- Generated by Eiffel Studio --
For more details: eiffel.org