Beloch.Isometry3
Exact 3D rigid motion: a 3×3 orthogonal matrix (det ±1) plus a translation, all in Num. Places a face of the paper into 3-space. Flat folds use only half_turn_about_line; general rotation-by-θ (θ = rπ) is Stage B.
Num
half_turn_about_line
type point = {
x : Num.t;
y : Num.t;
z : Num.t;
}
type t = {
m00 : Num.t;
m01 : Num.t;
m02 : Num.t;
m10 : Num.t;
m11 : Num.t;
m12 : Num.t;
m20 : Num.t;
m21 : Num.t;
m22 : Num.t;
tx : Num.t;
ty : Num.t;
tz : Num.t;
val identity : t
val apply_point : t -> point -> point
val compose : t -> t -> t
val det_sign : t -> int
val inverse : t -> t
val half_turn_about_line : on:point -> dir:point -> t
val equal : t -> t -> bool