times

operator fun <T : Segment> T.times(motor: Motor): T

Segment * Motor => Segment
Returns this segment moved by motor's rigid motion.

Moves the wrapped blade — Dipole * Motor carries the geometric contract — and wraps the result: the segment's endpoints move together, Segment.start staying start. The moved segment derives its endpoints from the moved blade; the endpoint instances a constructor-built segment shares by reference are not carried across the move. The result is the receiver's own class: the moved geometry returns through Segment.copy, preserving a subclass that overrides the hook.

Receiver

The Segment to move.

Return

The moved segment, as the receiver's class.

Parameters

motor

The rigid motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.


operator fun <T : Segment> T.times(flector: Flector): T

Segment * Flector => Segment
Returns this segment reflected by flector's mirror motion.

Reflects the wrapped blade — Dipole * Flector carries the geometric contract — and wraps the result: the segment's endpoints reflect together, Segment.start staying start. The reflected segment derives its endpoints from the moved blade; the endpoint instances a constructor-built segment shares by reference are not carried across the move. The result is the receiver's own class: the moved geometry returns through Segment.copy, preserving a subclass that overrides the hook.

Receiver

The Segment to reflect.

Return

The reflected segment, as the receiver's class.

Parameters

flector

The mirror motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.


operator fun <T : Segment> T.times(versor: Versor): T

Segment * Versor => Segment
Returns this segment moved by versor.

The action for a versor typed only as Versor: it dispatches to the Segment * Motor and Segment * Flector forms; a versor with a concrete static type resolves to those directly.

Receiver

The Segment to move.

Return

The moved segment, as the receiver's class.

Parameters

versor

The motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.


operator fun <T : Polyline> T.times(motor: Motor): T

Polyline * Motor => Polyline
Returns this polyline moved by motor's rigid motion.

Builds the polyline of the moved vertices, in order — every vertex carried by the same motion, so the chain's segment lengths and angles are preserved, raw at full Double precision. Consecutive vertices lying within a SCALE quantum of each other can land rounded-coincident after the move, and the moved chain is then rejected. The result is the receiver's own class: the moved geometry returns through Polyline.copy, preserving a subclass that overrides the hook.

Receiver

The Polyline to move.

Return

The moved polyline, as the receiver's class.

Parameters

motor

The rigid motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.

Throws

when the move lands two consecutive vertices rounded-coincident at the SCALE quantum.


operator fun <T : Polyline> T.times(flector: Flector): T

Polyline * Flector => Polyline
Returns this polyline reflected by flector's mirror motion.

Builds the polyline of the reflected vertices, in order — every vertex carried by the same motion, so the chain's segment lengths and angles are preserved, raw at full Double precision. Consecutive vertices lying within a SCALE quantum of each other can land rounded-coincident after the move, and the moved chain is then rejected. The result is the receiver's own class: the moved geometry returns through Polyline.copy, preserving a subclass that overrides the hook.

Receiver

The Polyline to reflect.

Return

The reflected polyline, as the receiver's class.

Parameters

flector

The mirror motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.

Throws

when the move lands two consecutive vertices rounded-coincident at the SCALE quantum.


operator fun <T : Polyline> T.times(versor: Versor): T

Polyline * Versor => Polyline
Returns this polyline moved by versor.

The action for a versor typed only as Versor: it dispatches to the Polyline * Motor and Polyline * Flector forms; a versor with a concrete static type resolves to those directly.

Receiver

The Polyline to move.

Return

The moved polyline, as the receiver's class.

Parameters

versor

The motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.

Throws

when the move lands two consecutive vertices rounded-coincident at the SCALE quantum.


operator fun <T : Polygon> T.times(motor: Motor): T

Polygon * Motor => Polygon
Returns this polygon moved by motor's rigid motion.

Builds the polygon of the moved vertices, in order — every vertex carried by the same motion, so edge lengths, angles, and the winding are preserved, raw at full Double precision. Consecutive vertices lying within a SCALE quantum of each other can land rounded-coincident after the move, and the moved loop is then rejected. The result is the receiver's own class: the moved geometry returns through Polygon.copy, preserving a subclass that overrides the hook.

Receiver

The Polygon to move.

Return

The moved polygon, as the receiver's class.

Parameters

motor

The rigid motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.

Throws

when the move lands two consecutive vertices rounded-coincident at the SCALE quantum.


operator fun <T : Polygon> T.times(flector: Flector): T

Polygon * Flector => Polygon
Returns this polygon reflected by flector's mirror motion — same shape, reversed winding.

Builds the polygon of the reflected vertices, in order — every vertex carried by the same motion, so edge lengths and angles are preserved, raw at full Double precision. A mirror motion reverses the winding: a counter-clockwise loop comes back clockwise — a valid polygon, with Polygon.signedArea's sign following the new winding. Consecutive vertices lying within a SCALE quantum of each other can land rounded-coincident after the move, and the moved loop is then rejected. The result is the receiver's own class: the moved geometry returns through Polygon.copy, preserving a subclass that overrides the hook.

Receiver

The Polygon to reflect.

Return

The reflected polygon, as the receiver's class.

Parameters

flector

The mirror motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.

Throws

when the move lands two consecutive vertices rounded-coincident at the SCALE quantum.


operator fun <T : Polygon> T.times(versor: Versor): T

Polygon * Versor => Polygon
Returns this polygon moved by versor.

The action for a versor typed only as Versor: it dispatches to the Polygon * Motor and Polygon * Flector forms; a versor with a concrete static type resolves to those directly.

Receiver

The Polygon to move.

Return

The moved polygon, as the receiver's class.

Parameters

versor

The motion to apply.

Type Parameters

T

The receiver's type, preserved in the result.

Throws

when the move lands two consecutive vertices rounded-coincident at the SCALE quantum.