Skip to main content

refine_crossing

Function refine_crossing 

Source
pub fn refine_crossing<const D: usize, const C: usize>(
    curve_a: &NurbCurve<D>,
    curve_b: &NurbCurve<D>,
    t_a: Scalar,
    t_b: Scalar,
) -> (Scalar, Scalar)
Expand description

Polish one isolated (t_a, t_b) — as returned by curve_curve_intersect — by Gauss-Newton on A(t_a) - B(t_b) = 0 (newton::refine).

Two unknowns against C equations, so each step solves the normal equations (JᵀJ)δ = -JᵀF with J = [A'(t_a), -B'(t_b)]; parallel tangents make JᵀJ singular, and leave the box as it is. So does a refined box that provably holds no crossing — see curve_surface::refine_crossing.