Module arc_length

Source
Expand description

Arc-length evaluation of intrinsic (natural-equation) curves and of the planar-plus-elevation composition.

§Why quadrature, and why that is not an approximation of the VALUE

An intrinsic curve stores curvature as a function of arc length. Its heading is the integral of that law and is exact in closed form, but its POSITION is the integral of (cos th, sin th) and has no elementary antiderivative – for the clothoid it is the Fresnel integral. The stored value stays exact; only reading a point out of it needs numerical work. That is the same bargain as evaluating sin: the curve is not approximated, its evaluation is computed to tolerance.

Gauss-Legendre is used because the integrand is smooth. An 8-point rule integrates a degree-15 polynomial exactly, and against the Fresnel closed form it reproduces a 120 m clothoid to R=300 with zero error at machine precision on a single panel, versus roughly 1e-3 relative for a comparable trapezoid budget. Panels are subdivided by total turning so a tight spiral gets more of them.

A panel must never straddle a seam of a piecewise law: Gauss-Legendre assumes a smooth integrand, and a joined curve was wrong by 3.0e-3 until panels were split at seams. Any new integrator splits at CurvatureLaw::seams_within too. Pin a change to this quadrature against an independent closed form (Fresnel for the clothoid, the elementary arc for constant curvature), never against another run of the quadrature (ADR 0060).

Functions§

elevated_point
Position on an elevated curve at plan distance d.
elevated_tangent
Unit tangent of an elevated curve at plan distance d.
intrinsic_point
Position on an intrinsic curve at arc length s from its start.
intrinsic_tangent
Unit tangent of an intrinsic curve at arc length s.