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}