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).