Add more conversions for translations
Add [T; D] <-> Translation<T, D>
Add Point<T, D> -> Translation<T, D>
@@ -11,6 +11,7 @@ use crate::geometry::{
AbstractRotation, Isometry, Similarity, SuperTCategoryOf, TAffine, Transform, Translation,
Translation3, UnitDualQuaternion, UnitQuaternion,
};
+use crate::Point;
/*
* This file provides the following conversions:
@@ -199,6 +200,31 @@ impl<T: Scalar, const D: usize> From<OVector<T, Const<D>>> for Translation<T, D>
}
}
+impl<T: Scalar, const D: usize> From<[T; D]> for Translation<T, D> {
+ #[inline]
+ fn from(coords: [T; D]) -> Self {
+ Translation {
+ vector: coords.into(),
+ }
+ }
+}
+
+impl<T: Scalar, const D: usize> From<Point<T, D>> for Translation<T, D> {
+ #[inline]
+ fn from(pt: Point<T, D>) -> Self {
+ Translation {
+ vector: pt.coords.into(),
+ }
+ }
+}
+
+impl<T: Scalar, const D: usize> Into<[T; D]> for Translation<T, D> {
+ #[inline]
+ fn into(self) -> [T; D] {
+ self.vector.into()
+ }
+}
+
impl<T: Scalar + PrimitiveSimdValue, const D: usize> From<[Translation<T::Element, D>; 2]>
for Translation<T, D>
where
