fj_kernel/operations/update/
edge.rs

1use crate::{
2    objects::{GlobalEdge, HalfEdge, Vertex},
3    storage::Handle,
4};
5
6/// Update a [`HalfEdge`]
7pub trait UpdateHalfEdge {
8    /// Update the start vertex of the half-edge
9    fn replace_start_vertex(&self, start_vertex: Handle<Vertex>) -> HalfEdge;
10
11    /// Update the global form of the half-edge
12    fn replace_global_form(&self, global_form: Handle<GlobalEdge>) -> HalfEdge;
13}
14
15impl UpdateHalfEdge for HalfEdge {
16    fn replace_start_vertex(&self, start_vertex: Handle<Vertex>) -> HalfEdge {
17        HalfEdge::new(
18            self.curve(),
19            self.boundary(),
20            start_vertex,
21            self.global_form().clone(),
22        )
23    }
24
25    fn replace_global_form(&self, global_form: Handle<GlobalEdge>) -> HalfEdge {
26        HalfEdge::new(
27            self.curve(),
28            self.boundary(),
29            self.start_vertex().clone(),
30            global_form,
31        )
32    }
33}