Module intrinsic_relation

Source
Expand description

Relations over Intrinsic3: trimming, offsetting, and joining.

§What is exact and what is refused

An Intrinsic3 stores laws against ARC LENGTH. That is what makes some relations exact and others impossible without changing the value’s meaning.

Trim is exact. Restricting to [a, b] does not refit anything: the curvature and torsion laws are re-anchored with CurvatureLaw::shifted, which the family is closed under, and the start frame is moved to the curve’s own point and frame at a. The only numerical step is finding that anchor, which is the same quadrature the evaluator already performs – the SHAPE stays exact.

Offset is exact only for a helix, and otherwise refused. The normal offset q(s) = p(s) + d * N(s) is not unit speed: differentiating gives |q'| = |1 - d*k(s)|, so the offset advances at a different rate than the base. An Intrinsic3 stores laws in arc length, so representing the offset requires reparameterising by ITS arc length. That reparameterisation is a closed-form rescale only when k is constant; for a varying law it is the inverse of a non-elementary integral, and writing a law in the family would be a fit, not the curve. Measured: for k(s) = 0.20 + 0.05 s and d = 0.8 the offset speed sweeps 0.72 .. 0.84 across the span.

For a helix the closure is genuine, and pleasant: the normal points at the axis, so offsetting slides the curve to a coaxial helix of radius a - d with the SAME pitch and the SAME angular rate. With c = hypot(a, b) and c2 = hypot(a - d, b), the offset has k2 = (a-d)/c2^2, tau2 = b/c2^2, and its arc length runs at c2/c times the base’s.

Join is exact when the ends actually meet. Two curves compose into one Piecewise law when the second one’s start frame is the first one’s end frame; otherwise the join is a fiction and is refused by name.

Functions§

join_intrinsic3
Join two space curves into one, when the second continues the first.
offset_intrinsic3
Offset a space curve by distance along its principal normal.
trim_intrinsic3
Restrict a space curve to [start, end] of its arc length.