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 | (read from right to left) 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