stroke 0.3.0

Zero-allocation, const-generic implementations of Bézier and B-Spline curves in N-dimensional euclidean space.
Documentation
use stroke::{BezierPath, CubicBezier, LineSegment, PointN, QuadraticBezier};

fn main() {
    let mut path: BezierPath<PointN<f64, 2>, 8> = BezierPath::new();

    path.push_line(LineSegment::new(
        PointN::new([0.0, 0.0]),
        PointN::new([1.0, 0.0]),
    ));

    path.push_quadratic(QuadraticBezier::new(
        PointN::new([1.0, 0.0]),
        PointN::new([1.5, 0.8]),
        PointN::new([2.0, 0.0]),
    ));

    path.push_cubic(CubicBezier::new(
        PointN::new([2.0, 0.0]),
        PointN::new([2.5, -0.6]),
        PointN::new([3.0, 0.8]),
        PointN::new([3.5, 0.0]),
    ));

    let sample = path.eval(0.35).unwrap();
    println!("sample: {:?}", sample);

    let bounds = path.bounding_box().unwrap();
    println!("bounds: {:?}", bounds);
}