Skip to main content

curve_surface_crossings

Function curve_surface_crossings 

Source
pub fn curve_surface_crossings(
    curve: &NurbCurve<4>,
    surface: &NurbSurface<4>,
    max_nodes: usize,
    min_subdivision_size: Scalar,
) -> GeopResult<Vec<(Scalar, Vector2)>>
Expand description

All (t, (u, v)) with curve(t) = surface(u, v), as paired parameter boxes (curve_surface.md), for a curve with no arc lying on the surface — see curve_surface_intersect for the wrapper that handles that. The same search as curve_curve::curve_curve_crossings, over (curve segment, patch) pairs with three parameter directions: AABB and [clip] rejection, a pinned parameter handed down one dimension ([solve_pinned]), restriction while the clip keeps shrinking the pair ([crate::fat_line::restriction]), and once it stalls, convergence when both objects’ extents are within min_subdivision_size or fair bisection otherwise ([crate::fat_line::stalled]).

Overlapping boxes merge by union into one unresolved cluster, never an average. Exhausting max_nodes is an error — the result would be incomplete.