Expand description
Tangential contact: two surfaces that touch along a curve without crossing it.
Where two surfaces cross, the curve they share runs along the cross
product of their normals, and the crossing walker in crate::march
follows that. Where they touch, the normals are parallel all along the
curve, the cross product vanishes, and the crossing walker stalls in
fragments. The contact is still a curve, with a description of its own:
the locus where the two surfaces meet with parallel normals. This module
follows that locus.
§Prediction
At a contact the two surfaces share a tangent plane, and along the contact their normal curvatures agree: both are the normal curvature of the one curve they share. The contact therefore runs along the null direction of the difference of the two second fundamental forms, taken in the common tangent plane. Where that difference has no distinguished null direction (both its eigenvalues of one size), the surfaces touch at an isolated point or osculate in every direction, and there is no curve to predict along.
§Correction
A Newton step on four conditions in the four parameters: the second surface’s point lies on the first surface’s normal line through its own point (two conditions), the two normals agree across the contact (one condition; their disagreement along the contact is the null direction’s and carries no information), and the point lies one step ahead along the prediction. The gap along the normal is not a condition: at a contact it touches zero without crossing it, so it has no root a Newton step could find. It is measured instead, and a corrected point whose gap exceeds the acceptance is where the surfaces part, so the trace stops there.
Functions§
- trace_
tangential - Trace the tangential contact of two surfaces through a seed.