nalgebra/geometry/
translation_simba.rs

1use simba::simd::SimdValue;
2
3use crate::base::OVector;
4use crate::Scalar;
5
6use crate::geometry::Translation;
7
8impl<T: Scalar + SimdValue, const D: usize> SimdValue for Translation<T, D>
9where
10    T::Element: Scalar,
11{
12    type Element = Translation<T::Element, D>;
13    type SimdBool = T::SimdBool;
14
15    #[inline]
16    fn lanes() -> usize {
17        T::lanes()
18    }
19
20    #[inline]
21    fn splat(val: Self::Element) -> Self {
22        OVector::splat(val.vector).into()
23    }
24
25    #[inline]
26    fn extract(&self, i: usize) -> Self::Element {
27        self.vector.extract(i).into()
28    }
29
30    #[inline]
31    unsafe fn extract_unchecked(&self, i: usize) -> Self::Element {
32        self.vector.extract_unchecked(i).into()
33    }
34
35    #[inline]
36    fn replace(&mut self, i: usize, val: Self::Element) {
37        self.vector.replace(i, val.vector)
38    }
39
40    #[inline]
41    unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element) {
42        self.vector.replace_unchecked(i, val.vector)
43    }
44
45    #[inline]
46    fn select(self, cond: Self::SimdBool, other: Self) -> Self {
47        self.vector.select(cond, other.vector).into()
48    }
49}