shape_core/elements/rectangles/rectangle_3d/
mod.rs1use super::*;
2
3pub struct Cuboid<T> {
16 pub min: Point3D<T>,
18 pub max: Point3D<T>,
20}
21
22impl<T> Debug for Cuboid<T>
23where
24 T: Debug + Clone + Sub<Output = T>,
25{
26 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
27 f.debug_struct("Cuboid")
28 .field("origin", &self.origin())
29 .field("width", &self.width())
30 .field("height", &self.height())
31 .field("length", &self.length())
32 .finish()
33 }
34}
35
36impl<T> Cuboid<T> {
37 pub fn origin(&self) -> Point3D<&T> {
39 self.min.ref_inner()
40 }
41 pub fn width(&self) -> T
43 where
44 T: Clone + Sub<Output = T>,
45 {
46 self.max.x.clone() - self.min.x.clone()
47 }
48 pub fn height(&self) -> T
50 where
51 T: Clone + Sub<Output = T>,
52 {
53 self.max.y.clone() - self.min.y.clone()
54 }
55 pub fn length(&self) -> T
57 where
58 T: Clone + Sub<Output = T>,
59 {
60 self.max.z.clone() - self.min.z.clone()
61 }
62}