use geometry_coords::CoordinateScalar;
use geometry_cs::Cartesian;
use geometry_tag::PointTag;
use geometry_trait::{Geometry, Point, PointMut};
use crate::Adapt;
impl<T: CoordinateScalar, const N: usize> Geometry for Adapt<[T; N]> {
type Kind = PointTag;
type Point = Self;
}
impl<T: CoordinateScalar, const N: usize> Point for Adapt<[T; N]> {
type Scalar = T;
type Cs = Cartesian;
const DIM: usize = N;
#[inline]
fn get<const D: usize>(&self) -> T {
self.0[D]
}
}
impl<T: CoordinateScalar, const N: usize> PointMut for Adapt<[T; N]> {
#[inline]
fn set<const D: usize>(&mut self, value: T) {
self.0[D] = value;
}
}