/// Поддерживаемые степени/порядки сплайнов для эффективного локального
/// вычисления базиса.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SplineOrder {
    /// Linear B-spline.
    Linear = 1,
    /// Quadratic B-spline.
    Quadratic = 2,
    /// Cubic B-spline.
    Cubic = 3,
}

impl SplineOrder {
    /// Степень полинома.
    pub fn degree(self) -> usize {
        self as usize
    }

    /// Минимальное число коэффициентов для данного порядка.
    pub fn min_basis(self) -> usize {
        self.degree() + 1
    }
}
