pub trait EuclideanSpace: AffineSpace<Translation = Self::CoordinateSpace> + AsPosition<Position = Self> + FiniteDimensional {
type CoordinateSpace: Basis + InnerSpace + FiniteDimensional<N = <Self as FiniteDimensional>::N>;
fn origin() -> Self;
fn from_coordinates(coordinates: Self::CoordinateSpace) -> Self { ... }
fn into_coordinates(self) -> Self::CoordinateSpace { ... }
fn from_x(x: Scalar<Self>) -> Self
where
Self: FiniteDimensional<N = U1>,
{ ... }
fn from_xy(x: Scalar<Self>, y: Scalar<Self>) -> Self
where
Self: FiniteDimensional<N = U2>,
{ ... }
fn from_xyz(x: Scalar<Self>, y: Scalar<Self>, z: Scalar<Self>) -> Self
where
Self: FiniteDimensional<N = U3>,
{ ... }
fn into_x(self) -> Scalar<Self>
where
Self: FiniteDimensional<N = U1>,
{ ... }
fn into_xy(self) -> (Scalar<Self>, Scalar<Self>)
where
Self: FiniteDimensional<N = U2>,
{ ... }
fn into_xyz(self) -> (Scalar<Self>, Scalar<Self>, Scalar<Self>)
where
Self: FiniteDimensional<N = U3>,
{ ... }
fn from_homogeneous(projective: Projective<Self>) -> Option<Self>
where
Self::CoordinateSpace: Homogeneous,
Projective<Self>: Truncate<Self::CoordinateSpace> + VectorSpace<Scalar = Scalar<Self>>,
{ ... }
fn into_homogeneous(self) -> Projective<Self>
where
Self::CoordinateSpace: Homogeneous + Extend<Projective<Self>>,
Projective<Self>: VectorSpace<Scalar = Scalar<Self>>,
{ ... }
fn centroid<I>(points: I) -> Option<Self>
where
I: IntoIterator<Item = Self>,
{ ... }
}