### 12.14.6 Similarity in space: similarity

See section 11.15.6 for similarities in the plane.

The similarity command takes three or four arguments. The first argument is a line, the axis of rotation; the second argument is a real number, which is the scaling ratio, and the third argument is another real number, the angle of rotation. If the scaling ratio is negative, then the direction of rotation is reversed. The optional fourth argument is the object which is transformed.

With three arguments, similarity returns a new command which scales and rotated about the given axis.
Input:

s := similarity(line(point(0,0,0),point(1,1,1)), 2, 2*pi/3)

then:

s(point(0,0,1))

returns and draws the point (2,0,0), which is the point (0,0,1) rotated about the line through (0,0,0) and (1,1,1) through an angle of 2π/3 radians and scaled away from the line by a factor of 2.

With a fourth argument of a geometric object, similarity returns and draws the transformed object.
Input:

similarity(line(point(0,0,0),point(1,1,1)), 2, 2*pi/3, point(0,0,1))

returns and draws the point (2,0,0), as above.