fj_kernel/algorithms/transform/
face.rs1use fj_math::Transform;
2
3use crate::{
4 objects::{Face, FaceSet},
5 services::Services,
6};
7
8use super::{TransformCache, TransformObject};
9
10impl TransformObject for Face {
11 fn transform_with_cache(
12 self,
13 transform: &Transform,
14 services: &mut Services,
15 cache: &mut TransformCache,
16 ) -> Self {
17 let color = self.color();
19
20 let surface = self
21 .surface()
22 .clone()
23 .transform_with_cache(transform, services, cache);
24 let exterior = self
25 .exterior()
26 .clone()
27 .transform_with_cache(transform, services, cache);
28 let interiors = self.interiors().cloned().map(|interior| {
29 interior.transform_with_cache(transform, services, cache)
30 });
31
32 Self::new(surface, exterior, interiors, color)
33 }
34}
35
36impl TransformObject for FaceSet {
37 fn transform_with_cache(
38 self,
39 transform: &Transform,
40 services: &mut Services,
41 cache: &mut TransformCache,
42 ) -> Self {
43 let mut faces = Self::new();
44 faces.extend(
45 self.into_iter().map(|face| {
46 face.transform_with_cache(transform, services, cache)
47 }),
48 );
49 faces
50 }
51}