cartesian_tree/
lazy_access.rs

1use nalgebra::{Isometry3, Translation3};
2
3#[derive(Clone)]
4pub struct LazyTranslation {
5    pub(crate) inner: Isometry3<f64>,
6}
7
8#[derive(Clone)]
9pub struct LazyRotation {
10    pub(crate) inner: Isometry3<f64>,
11}
12
13#[must_use]
14pub fn x(value: f64) -> LazyTranslation {
15    LazyTranslation {
16        inner: Isometry3::from_parts(
17            Translation3::new(value, 0.0, 0.0),
18            nalgebra::UnitQuaternion::identity(),
19        ),
20    }
21}
22
23#[must_use]
24pub fn y(value: f64) -> LazyTranslation {
25    LazyTranslation {
26        inner: Isometry3::from_parts(
27            Translation3::new(0.0, value, 0.0),
28            nalgebra::UnitQuaternion::identity(),
29        ),
30    }
31}
32
33#[must_use]
34pub fn z(value: f64) -> LazyTranslation {
35    LazyTranslation {
36        inner: Isometry3::from_parts(
37            Translation3::new(0.0, 0.0, value),
38            nalgebra::UnitQuaternion::identity(),
39        ),
40    }
41}
42
43#[must_use]
44pub fn rx(value: f64) -> LazyRotation {
45    LazyRotation {
46        inner: Isometry3::from_parts(
47            Translation3::new(0.0, 0.0, 0.0),
48            nalgebra::UnitQuaternion::from_euler_angles(value, 0.0, 0.0),
49        ),
50    }
51}
52
53#[must_use]
54pub fn ry(value: f64) -> LazyRotation {
55    LazyRotation {
56        inner: Isometry3::from_parts(
57            Translation3::new(0.0, 0.0, 0.0),
58            nalgebra::UnitQuaternion::from_euler_angles(0.0, value, 0.0),
59        ),
60    }
61}
62
63#[must_use]
64pub fn rz(value: f64) -> LazyRotation {
65    LazyRotation {
66        inner: Isometry3::from_parts(
67            Translation3::new(0.0, 0.0, 0.0),
68            nalgebra::UnitQuaternion::from_euler_angles(0.0, 0.0, value),
69        ),
70    }
71}