Skip to main content

make_hyperbola

Function make_hyperbola 

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