Skip to main content

exact_cone_cone

Function exact_cone_cone 

Source
pub fn exact_cone_cone(
    c1: &ConicalSurface,
    c2: &ConicalSurface,
) -> Result<Option<Vec<ExactIntersectionCurve>>, MathError>
Expand description

Exact coaxial cone-cone intersection: returns the shared circle.

Two cones that share an axis are concentric circles at every axial station, so they meet only where their radii are equal. Each cone’s radius is linear in the axial coordinate t (measured along the shared axis from cone 1’s apex): r1 = m1·t and r2 = m2·σ·(t − d2), where m_i = cot(half_angle_i), σ = sign(axis2·axis1), and d2 is cone 2’s apex position in that coordinate. Equating gives a single crossing t* → one circle (the shared rim). The general marcher mishandles this case: at the radii-crossing the surfaces are nearly tangent, so a grid-seeded march fragments the clean circle into dozens of degenerate micro-curves.

Returns Some(vec![circle]) for a genuine crossing, Some(vec![]) when the cones do not meet (parallel radius lines or a crossing on the wrong nappe), and None for the identical-cone overlap or a degenerate (near-flat) cone — both of which fall through to the general path.

§Errors

Returns MathError if the shared-rim Circle3D cannot be constructed (e.g. a non-finite center or radius from a malformed cone).