kasane_logic/geometry/shapes/solid/
geometry_relation.rs1use crate::{
2 Coordinate, IntoCoordinates, IntoLines, IntoPolygons, IntoTriangles, Line, Polygon, Solid,
3 Triangle,
4};
5
6impl IntoCoordinates for Solid {
7 fn into_coordinates(self) -> impl Iterator<Item = Coordinate> {
8 self.polygons
9 .into_iter()
10 .flat_map(|polygon| polygon.into_coordinates())
11 }
12
13 fn iter_coordinates(&self) -> impl Iterator<Item = Coordinate> {
14 self.polygons
15 .iter()
16 .flat_map(|polygon| polygon.iter_coordinates())
17 }
18}
19
20impl IntoLines for Solid {
21 fn into_lines(self) -> impl Iterator<Item = Line> {
22 self.polygons
23 .into_iter()
24 .flat_map(|polygon| polygon.into_lines())
25 }
26
27 fn iter_lines(&self) -> impl Iterator<Item = Line> {
28 self.polygons
29 .iter()
30 .flat_map(|polygon| polygon.iter_lines())
31 }
32}
33
34impl IntoTriangles for Solid {
35 fn into_triangles(self) -> impl Iterator<Item = Triangle> {
36 self.polygons
37 .into_iter()
38 .flat_map(|polygon| polygon.into_triangles())
39 }
40
41 fn iter_triangles(&self) -> impl Iterator<Item = Triangle> {
42 self.polygons
43 .iter()
44 .flat_map(|polygon| polygon.iter_triangles())
45 }
46}
47
48impl IntoPolygons for Solid {
49 fn into_polygons(self) -> impl Iterator<Item = Polygon> {
50 self.polygons.into_iter()
51 }
52
53 fn iter_polygons(&self) -> impl Iterator<Item = Polygon> {
54 self.polygons.clone().into_iter()
55 }
56}