5.2 Transformation Constructors

The following transformation constructors do not capture any of their inputs. The constructors all create objects that are subclasses of transformation. [annotate]

make-translation-transformation  translation-x translation-y [Function]
          

A translation is a transformation that preserves length, angle, and orientation of all geometric entities. [annotate]

make-translation-transformation returns a transformation that translates all points by translation-x in the x direction and translation-y in the y direction. translation-x and translation-y must be real numbers. [annotate]

[annotate]

make-rotation-transformation  angle &optional origin [Function]
make-rotation-transformation*  angle &optional origin-x origin-y [Function]
          

A rotation is a transformation that preserves length and angles of all geometric entities. Rotations also preserve one point (the origin) and the distance of all entities from that point. [annotate]

make-rotation-transformation returns a transformation that rotates all points by angle (which is a real number indicating an angle in radians) around the point origin. If origin is supplied it must be a point; if not supplied it defaults to (0,0). origin-x and origin-y must be real numbers, and default to 0. [annotate]

[annotate]

make-scaling-transformation  scale-x scale-y &optional origin [Function]
make-scaling-transformation*  scale-x scale-y &optional origin-x origin-y [Function]
          

There is no single definition of a scaling transformation. Transformations that preserve all angles and multiply all lengths by the same factor (preserving the "shape" of all entities) are certainly scaling transformations. However, scaling is also used to refer to transformations that scale distances in the x direction by one amount and distances in the y direction by another amount. [annotate]

make-scaling-transformation returns a transformation that multiplies the x-coordinate distance of every point from origin by scale-x and the y-coordinate distance of every point from origin by scale-y. scale-x and scale-y must be real numbers. If origin is supplied it must be a point; if not supplied it defaults to (0,0). origin-x and origin-y must be real numbers, and default to 0. [annotate]

[annotate]

make-reflection-transformation  point1 point2 [Function]
make-reflection-transformation*  x1 y1 x2 y2 [Function]
          

A reflection is a transformation that preserves lengths and magnitudes of angles, but changes the sign (or "handedness") of angles. If you think of the drawing plane on a transparent sheet of paper, a reflection is a transformation that "turns the paper over". [annotate]

make-reflection-transformation returns a transformation that reflects every point through the line passing through the points point1 and point2 (or through the positions (x1,y1) and (x2,y2) in the case of the spread version). [annotate]

[annotate]

make-transformation  mxx mxy myx myy tx ty [Function]
          

Returns a general transformation whose effect is:
x′ = mxxx + mxyy + tx
y′ = myxx + myyy + ty
where x and y are the coordinates of a point before the transformation and x′ and y′ are the coordinates of the corresponding point after. [annotate]

All of the arguments to make-transformation must be real numbers. [annotate]

[annotate]

make-3-point-transformation  point-1 point-2 point-3 point-1-image point-2-image point-3-image [Function]
          

Returns a transformation that takes points point-1 into point-1-image, point-2 into point-2-image and point-3 into point-3-image. Three non-collinear points and their images under the transformation are enough to specify any affine transformation. [annotate]

If point-1, point-2 and point-3 are collinear, the transformation-underspecified error will be signalled. If point-1-image, point-2-image and point-3-image are collinear, the resulting transformation will be singular (that is, will have no inverse) but this is not an error. [annotate]

[annotate]

make-3-point-transformation*  x1 y1 x2 y2 x3 y3 x1-image y1-image x2-image y2-image x3-image y3-image [Function]
          

Returns a transformation that takes the points at the positions (x1,y1) into (x1-image,y1-image), (x2,y2) into (x2-image,y2-image) and (x3,y3) into (x3-image,y3-image). Three non-collinear points and their images under the transformation are enough to specify any affine transformation. [annotate]

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. [annotate]

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

[annotate]