Skip to main content

refine_node

Function refine_node 

Source
pub fn refine_node(
    a: &NurbSurface3D,
    b: &NurbSurface3D,
    seed: [Scalar; 4],
) -> Option<([Scalar; 4], Vector3)>
Expand description

The node near seed where a and b touch at an isolated point — branches of the curve they meet in cross there, or they touch at that point alone — as its parameters (u_a, v_a, u_b, v_b) and the point, or None where Newton finds no such point, or one not isolated: where the surfaces touch along a curve or over an area, the system is singular and no node is claimed.

Gauss-Newton on S_a = S_b with the normals parallel, five equations in four unknowns, each iterate sharpened as the seed of the next but the last, whose width says how well the data pins the node down (see AGENTS.md). The answer is then checked against every condition it was asked to meet, over its box: both surfaces could be there, the normals could be parallel, and the system is of full rank all over it.