Skip to main content

touch_curve_surface

Function touch_curve_surface 

Source
pub fn touch_curve_surface(
    curve: &Curve,
    surface: &SurfaceGeometry,
    seed: f64,
    tol: Tolerances,
) -> Option<Piercing>
Expand description

Where a curve touches a surface without crossing it, solved from seed on the curve: the touch, or None if there is none beside the seed.

At a touch the gap between the curve and the surface falls to zero without changing sign, so C(t) = S(u, v) has a double root there: Newton on it slows to a halving of the distance per step and stops where the gap, the square of the distance left, meets its tolerance, short of the touch by the square root of that tolerance times the radius the two part at. intersect_curve_surface lands anywhere in that valley. The touch is solved here as one instead, from the seed’s foot on the surface: where that foot is the curve point’s nearest (two rows) and the curve runs in the surface’s tangent plane (one row), rows that stay regular where the two part at second order. It is kept where the curve and the surface are within the confusion distance there.