fj_core/operations/reverse/
edge.rs

1use crate::{
2    geometry::HalfEdgeGeometry,
3    objects::HalfEdge,
4    operations::{derive::DeriveFrom, insert::Insert},
5    storage::Handle,
6    Core,
7};
8
9use super::ReverseCurveCoordinateSystems;
10
11impl ReverseCurveCoordinateSystems for Handle<HalfEdge> {
12    fn reverse_curve_coordinate_systems(&self, core: &mut Core) -> Self {
13        let path = core.layers.geometry.of_half_edge(self).path.reverse();
14        let boundary = self.boundary().reverse();
15
16        let half_edge = HalfEdge::new(
17            path,
18            boundary,
19            self.curve().clone(),
20            self.start_vertex().clone(),
21        )
22        .insert(core)
23        .derive_from(self, core);
24
25        core.layers
26            .geometry
27            .define_half_edge(half_edge.clone(), HalfEdgeGeometry { path });
28
29        half_edge
30    }
31}