times
Motor * Motor => Motor
Returns the single motor performing this motion, then next's.
Proper composed with proper stays proper: two rigid motions chain into one rigid motion. Rotation angles add through the half-angle representation, so compositions whose angles sum past a full turn come back as the negated motor — the identical motion, comparing unequal as a value (see Versor).
Receiver
The motor applied first.
Return
The composite Motor.
Parameters
The motor applied after this one.
Flector * Flector => Motor
Returns the single motor performing this motion, then next's.
Improper composed with improper is proper: the orientation flips cancel, and two mirror motions chain into a rigid one — a rotation by twice the angle between crossing mirror lines, a translation when they are parallel. The same mirror line taken with opposite orientations composes to the negated identity motor — the identity motion, comparing unequal as a value (see Versor).
Receiver
The flector applied first.
Return
The composite Motor.
Parameters
The flector applied after this one.
Flector * Motor => Flector
Returns the single flector performing this motion, then next's.
Improper composed with proper stays improper: the mirror's orientation flip survives the rigid motion, so the composite is again a transflection.
Receiver
The flector applied first.
Return
The composite Flector.
Parameters
The motor applied after this one.
Motor * Flector => Flector
Returns the single flector performing this motion, then next's.
Proper composed with improper is improper: the rigid motion feeds into the mirror and the orientation flip remains, so the composite is again a transflection.
Receiver
The motor applied first.
Return
The composite Flector.
Parameters
The flector applied after this one.
Versor * Versor => Versor
Returns the single versor performing this motion, then next's.
The composition for operands typed only as Versor: it dispatches to the concrete pairing, so two motors or two flectors compose into a Motor and a mixed pair into a Flector. Operands with concrete static types resolve to those forms directly and keep their precise return types.
Receiver
The versor applied first.
Return
The composite versor — a Motor for two motors or two flectors, a Flector for a mixed pair.
Parameters
The versor applied after this one.
Shape * Versor => Shape
Returns this shape moved by versor.
The action for a receiver typed only as Shape: it dispatches on the shape's kind to that shape's own * Versor form, so one motion spelling covers every shape; a receiver with a concrete static type resolves to the per-shape forms directly. The result is the receiver's own class: the moved geometry returns through the shape's copy hook, preserving a subclass that overrides it.
Receiver
The Shape to move.
Return
The moved shape, as the receiver's class.
Parameters
The motion to apply.
Type Parameters
The receiver's type, preserved in the result.