Page 37 Table of Contents Index Page 39
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E



CHAPTER 5. AFFINE TRANSFORMATIONS

points and their images under the transformation are enough to specify any affine transfor-
mation.

If the positions (x1;y1), (x2;y2) and (x3;y3) are collinear, the transformation-underspecified
error will be signalled. If (x1-image,y1-image), (x2-image,y2-image), and (x3-image,y3-image)
are collinear, the resulting transformation will be singular but this is not an error.

This is the spread version of make-3-point-transformation.

5.3 The Transformation Protocol

The following subsections describe the transformation protocol. All classes that are subclasses
of transformation must implement methods for all of the generic functions in the following
subsections.

5.3.1 Transformation Predicates

In all of the functions below, the argument named transformation must be a transformation.

=> transformation-equal transformation1 transformation2 [Generic Function]
Returns true if the two transformations transformation1 and transformation2 have equivalent
effects (that is, are mathematically equal), otherwise returns false.

Implementations are encouraged to allow transformations that are not numerically equal due to
floating-point roundoff errors to be transformation-equal. An appropriate level of "fuzziness"
is single-float-epsilon, or some small multiple of single-float-epsilon.

=> identity-transformation-p transformation [Generic Function]
Returns true if the transformation transformation is equal (in the sense of transformation-
equal
) to the identity transformation, otherwise returns false.

=> invertible-transformation-p transformation [Generic Function]
Returns true if the transformation transformation has an inverse, otherwise returns false.

=> translation-transformation-p transformation [Generic Function]
Returns true if the transformation transformation is a pure translation, that is, a transformation
such that there are two distance components dx and dy and every point (x;y) is moved to
(x + dx;y + dy). Otherwise, translation-transformation-p returns false.

=> reflection-transformation-p transformation [Generic Function]
Returns true if the transformation transformation inverts the "handedness" of the coordinate


Page 37 Table of Contents Index Page 39
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E