use crate::geo::*;
use smallvec::*;
pub fn derivative_n<Point: Coordinate, const N: usize>(points: SmallVec<[Point; N]>) -> SmallVec<[Point; N]> {
let n = points.len();
let multiplier = (n-1) as f64;
let mut derivative = smallvec![];
for idx in 0..(n-1) {
derivative.push((points[idx+1]-points[idx])*multiplier);
}
derivative
}
pub fn derivative4<Point: Coordinate>(w1: Point, w2: Point, w3: Point, w4: Point) -> (Point, Point, Point) {
((w2-w1)*3.0, (w3-w2)*3.0, (w4-w3)*3.0)
}
pub fn derivative3<Point: Coordinate>(wn1: Point, wn2: Point, wn3: Point) -> (Point, Point) {
((wn2-wn1)*2.0, (wn3-wn2)*2.0)
}
pub fn derivative2<Point: Coordinate>(wnn1: Point, wnn2: Point) -> Point {
wnn2-wnn1
}