pub fn make_hyperbola(
center: Vec3,
major_axis: Vec3,
minor_axis: Vec3,
a: f64,
b: f64,
t0: f64,
t1: f64,
) -> Result<NurbsCurve, String>Expand description
Exact arc of the hyperbola branch x²/a² − y²/b² = 1, x > 0 in the local
frame (center at the origin, major_axis = +x, minor_axis = +y),
parametrized P(t) = (a·cosh t, b·sinh t) and trimmed to t ∈ [t0, t1].
A single rational quadratic Bézier is exact for any sweep on one branch:
endpoints on the curve, middle control point at the intersection of the
end tangents, and middle weight cosh((t1−t0)/2) chosen so the shoulder
point lands back on the branch. Only the point set is hyperbola-exact
away from the ends; the NURBS parameter coincides with the hyperbolic
parameter t exactly at t0, (t0+t1)/2 and t1.