azure_kinect/
vectors.rs

1use azure_kinect_sys::k4a::*;
2use std::fmt::{Display, Formatter};
3
4#[doc = " Two dimensional floating point vector."]
5#[derive(Copy, Clone, Default)]
6pub struct Float2 {
7    pub(crate) value: k4a_float2_t,
8}
9
10impl Float2 {
11    pub fn new(x: f32, y: f32) -> Float2 {
12        Float2 {
13            value: k4a_float2_t {
14                xy: k4a_float2_t__xy { x, y },
15            },
16        }
17    }
18
19    #[allow(dead_code)]
20    pub(crate) fn from_native(value: k4a_float2_t) -> Float2 {
21        Float2 { value }
22    }
23
24    #[doc = "< X component of a vector"]
25    pub fn x(&self) -> f32 {
26        unsafe { self.value.xy.x }
27    }
28    #[doc = "< Y component of a vector"]
29    pub fn y(&self) -> f32 {
30        unsafe { self.value.xy.y }
31    }
32}
33
34impl Display for Float2 {
35    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
36        write!(f, "({}, {})", self.x(), self.y())
37    }
38}
39
40#[doc = " Three dimensional floating point vector."]
41#[derive(Copy, Clone, Default)]
42pub struct Float3 {
43    pub(crate) value: k4a_float3_t,
44}
45
46impl Float3 {
47    pub fn new(x: f32, y: f32, z: f32) -> Float3 {
48        Float3 {
49            value: k4a_float3_t {
50                xyz: k4a_float3_t__xyz { x, y, z },
51            },
52        }
53    }
54
55    pub(crate) fn from_native(value: k4a_float3_t) -> Float3 {
56        Float3 { value }
57    }
58
59    #[doc = "< X component of a vector"]
60    pub fn x(&self) -> f32 {
61        unsafe { self.value.xyz.x }
62    }
63    #[doc = "< Y component of a vector"]
64    pub fn y(&self) -> f32 {
65        unsafe { self.value.xyz.y }
66    }
67    #[doc = "< Z component of a vector"]
68    pub fn z(&self) -> f32 {
69        unsafe { self.value.xyz.z }
70    }
71}
72
73impl Display for Float3 {
74    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
75        write!(f, "({}, {}, {})", self.x(), self.y(), self.z())
76    }
77}