use crate::{Point, RTreeNum};
impl<T: RTreeNum> Point for mint::Point2<T> {
type Scalar = T;
const DIMENSIONS: usize = 2;
fn generate(mut generator: impl FnMut(usize) -> Self::Scalar) -> Self {
mint::Point2 {
x: generator(0),
y: generator(1),
}
}
fn nth(&self, index: usize) -> Self::Scalar {
match index {
0 => self.x,
1 => self.y,
_ => unreachable!(),
}
}
fn nth_mut(&mut self, index: usize) -> &mut Self::Scalar {
match index {
0 => &mut self.x,
1 => &mut self.y,
_ => unreachable!(),
}
}
}
impl<T: RTreeNum> Point for mint::Point3<T> {
type Scalar = T;
const DIMENSIONS: usize = 3;
fn generate(mut generator: impl FnMut(usize) -> Self::Scalar) -> Self {
mint::Point3 {
x: generator(0),
y: generator(1),
z: generator(2),
}
}
fn nth(&self, index: usize) -> Self::Scalar {
match index {
0 => self.x,
1 => self.y,
2 => self.z,
_ => unreachable!(),
}
}
fn nth_mut(&mut self, index: usize) -> &mut Self::Scalar {
match index {
0 => &mut self.x,
1 => &mut self.y,
2 => &mut self.z,
_ => unreachable!(),
}
}
}