Migrate update_path to UpdateHalfEdgeGeometry

This commit is contained in:
Hanno Braun 2024-03-18 13:20:34 +01:00
parent ec6d03b633
commit 38129b10ba
3 changed files with 34 additions and 26 deletions

View File

@ -1,2 +1,33 @@
use crate::{
geometry::SurfacePath, objects::HalfEdge, operations::insert::Insert,
storage::Handle, Core,
};
/// Update the geometry of a [`HalfEdge`]
pub trait UpdateHalfEdgeGeometry {}
pub trait UpdateHalfEdgeGeometry {
/// Update the path of the edge
#[must_use]
fn update_path(
&self,
update: impl FnOnce(SurfacePath) -> SurfacePath,
core: &mut Core,
) -> Self;
}
impl UpdateHalfEdgeGeometry for Handle<HalfEdge> {
fn update_path(
&self,
update: impl FnOnce(SurfacePath) -> SurfacePath,
core: &mut Core,
) -> Self {
let path = update(self.path());
HalfEdge::new(
path,
self.boundary(),
self.curve().clone(),
self.start_vertex().clone(),
)
.insert(core)
}
}

View File

@ -1,7 +1,7 @@
use fj_math::Point;
use crate::{
geometry::{CurveBoundary, SurfacePath},
geometry::CurveBoundary,
objects::{Curve, HalfEdge, Vertex},
operations::{derive::DeriveFrom, insert::Insert},
storage::Handle,
@ -10,14 +10,6 @@ use crate::{
/// Update a [`HalfEdge`]
pub trait UpdateHalfEdge: Sized {
/// Update the path of the edge
#[must_use]
fn update_path(
&self,
update: impl FnOnce(SurfacePath) -> SurfacePath,
core: &mut Core,
) -> Handle<Self>;
/// Update the boundary of the edge
#[must_use]
fn update_boundary(
@ -47,22 +39,6 @@ pub trait UpdateHalfEdge: Sized {
}
impl UpdateHalfEdge for HalfEdge {
fn update_path(
&self,
update: impl FnOnce(SurfacePath) -> SurfacePath,
core: &mut Core,
) -> Handle<Self> {
let path = update(self.path());
HalfEdge::new(
path,
self.boundary(),
self.curve().clone(),
self.start_vertex().clone(),
)
.insert(core)
}
fn update_boundary(
&self,
update: impl FnOnce(CurveBoundary<Point<1>>) -> CurveBoundary<Point<1>>,

View File

@ -403,6 +403,7 @@ mod tests {
objects::{Curve, Shell},
operations::{
build::BuildShell,
geometry::UpdateHalfEdgeGeometry,
update::{
UpdateCycle, UpdateFace, UpdateHalfEdge, UpdateRegion,
UpdateShell,