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    const LANES: usize = T::LANES;
13    type Element = Translation<T::Element, D>;
14    type SimdBool = T::SimdBool;
15
16    #[inline]
17    fn splat(val: Self::Element) -> Self {
18        OVector::splat(val.vector).into()
19    }
20
21    #[inline]
22    fn extract(&self, i: usize) -> Self::Element {
23        self.vector.extract(i).into()
24    }
25
26    #[inline]
27    unsafe fn extract_unchecked(&self, i: usize) -> Self::Element {
28        self.vector.extract_unchecked(i).into()
29    }
30
31    #[inline]
32    fn replace(&mut self, i: usize, val: Self::Element) {
33        self.vector.replace(i, val.vector)
34    }
35
36    #[inline]
37    unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element) {
38        self.vector.replace_unchecked(i, val.vector)
39    }
40
41    #[inline]
42    fn select(self, cond: Self::SimdBool, other: Self) -> Self {
43        self.vector.select(cond, other.vector).into()
44    }
45}