Versor

sealed interface Versor

Umbrella over the motion types applied to shapes with * — Motor (rotations and translations) and Flector (reflections and glide reflections).

A versor is anything that acts by the antiproduct sandwich: shape * V applies V ⟇ u ⟇ V̰ (with the leading minus for the odd Flector). The multiplicative spelling is the standard notation for a right group action, not the algebra's one-sided product u ⟇ V; a versor never appears on the left of a shape — V * shape does not exist — so the spelling cannot be mistaken for the raw antiproduct.

A * B composes versors, left operand applied first (composition does not commute — the order is the contract), computed as the antiproduct B ⟇ A, since (B⟇A) ⟇ u ⟇ (B⟇A)̰ = B ⟇ (A⟇u⟇Ã) ⟇ B̰ — the inner sandwich A runs first. Together these make * exactly associative across the whole surface: (u * A) * B == u * (A * B) — a stored composite motion behaves identically to chained applications, which is why the action shares its symbol with composition.

The sandwich is even in the versor: V and −V apply the identical motion, though they compare unequal as values.

Sealed so the per-shape * Versor dispatch overloads and the Versor * Versor composition can be exhaustive whens.

Inheritors

Functions

Link copied to clipboard
operator fun Versor.times(next: Versor): Versor

Versor * Versor => Versor
Returns the single versor performing this motion, then next's.