fj_core/operations/transform/
edge.rs

1use fj_math::Transform;
2
3use crate::{
4    geometry::HalfEdgeGeometry, objects::HalfEdge, operations::insert::Insert,
5    storage::Handle, Core,
6};
7
8use super::{TransformCache, TransformObject};
9
10impl TransformObject for Handle<HalfEdge> {
11    fn transform_with_cache(
12        &self,
13        transform: &Transform,
14        core: &mut Core,
15        cache: &mut TransformCache,
16    ) -> Self {
17        // Don't need to transform the path, as that's defined in surface
18        // coordinates.
19        let path = core.layers.geometry.of_half_edge(self).path;
20        let boundary = self.boundary();
21        let curve = self
22            .curve()
23            .clone()
24            .transform_with_cache(transform, core, cache);
25        let start_vertex = self
26            .start_vertex()
27            .clone()
28            .transform_with_cache(transform, core, cache);
29
30        let half_edge =
31            HalfEdge::new(path, boundary, curve, start_vertex).insert(core);
32
33        core.layers
34            .geometry
35            .define_half_edge(half_edge.clone(), HalfEdgeGeometry { path });
36
37        half_edge
38    }
39}