cartesian_tree/
lazy_access.rs1use 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}