use super::point::Point;
pub trait Curve {
fn point_at(&self, t: f64) -> Point;
fn tangent_at(&self, t: f64) -> Point;
fn bounding_box(&self) -> (Point, Point);
fn parameter_range(&self) -> (f64, f64);
fn length(&self, tolerance: f64) -> f64;
fn is_closed(&self) -> bool;
fn degree(&self) -> usize;
}
#[derive(Debug, Clone, PartialEq)]
pub enum CurveType {
Line,
Arc,
Ellipse,
BSpline,
NURBS,
Polyline,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_curve_trait_bounds() {
let _ = CurveType::Line;
}
}