pub use self::simplex2d::SimplexProcessor2;
pub use self::simplex3d::SimplexProcessor3;
mod simplex2d;
mod simplex3d;
use cgmath::prelude::*;
use smallvec::SmallVec;
use crate::algorithm::minkowski::SupportPoint;
pub type Simplex<P> = SmallVec<[SupportPoint<P>; 5]>;
pub trait SimplexProcessor {
type Point: EuclideanSpace;
fn reduce_to_closest_feature(
&self,
simplex: &mut Simplex<Self::Point>,
d: &mut <Self::Point as EuclideanSpace>::Diff,
) -> bool;
fn get_closest_point_to_origin(
&self,
simplex: &mut Simplex<Self::Point>,
) -> <Self::Point as EuclideanSpace>::Diff;
fn new() -> Self;
}