Remove code that defines half-edge geometry

This commit is contained in:
Hanno Braun 2024-07-10 21:39:33 +02:00
parent 1b7776e4f5
commit 2abd1dda54
12 changed files with 21 additions and 151 deletions

View File

@ -1,11 +1,8 @@
use fj_math::{Arc, Point, Scalar};
use crate::{
geometry::{CurveBoundary, HalfEdgeGeom, LocalCurveGeom, SurfacePath},
operations::{
geometry::{UpdateCurveGeometry, UpdateHalfEdgeGeometry},
insert::Insert,
},
geometry::{CurveBoundary, LocalCurveGeom, SurfacePath},
operations::{geometry::UpdateCurveGeometry, insert::Insert},
storage::Handle,
topology::{Curve, HalfEdge, Surface, Vertex},
Core,
@ -31,12 +28,7 @@ pub trait BuildHalfEdge {
start_vertex: Handle<Vertex>,
core: &mut Core,
) -> Handle<HalfEdge> {
let mut geometry = *core.layers.geometry.of_half_edge(sibling).unwrap();
geometry.boundary = geometry.boundary.reverse();
HalfEdge::new(sibling.curve().clone(), start_vertex)
.insert(core)
.set_geometry(geometry, &mut core.layers.geometry)
HalfEdge::new(sibling.curve().clone(), start_vertex).insert(core)
}
/// Create an arc
@ -72,9 +64,6 @@ pub trait BuildHalfEdge {
surface,
LocalCurveGeom { path },
);
core.layers
.geometry
.define_half_edge(half_edge.clone(), HalfEdgeGeom { boundary });
(half_edge, boundary)
}
@ -96,10 +85,6 @@ pub trait BuildHalfEdge {
&mut core.layers.geometry,
);
core.layers
.geometry
.define_half_edge(half_edge.clone(), HalfEdgeGeom { boundary });
(half_edge, boundary)
}
}

View File

@ -4,10 +4,10 @@ use fj_interop::ext::ArrayExt;
use fj_math::Point;
use crate::{
geometry::{CurveBoundary, HalfEdgeGeom, LocalVertexGeom},
geometry::{CurveBoundary, LocalVertexGeom},
operations::{
build::{BuildFace, BuildHalfEdge, BuildSurface, Polygon},
geometry::{UpdateCurveGeometry, UpdateHalfEdgeGeometry},
geometry::UpdateCurveGeometry,
insert::{Insert, IsInserted, IsInsertedNo, IsInsertedYes},
join::JoinCycle,
reverse::ReverseCurveCoordinateSystems,
@ -123,10 +123,6 @@ pub trait BuildShell {
)
.update_curve(|_, _| curve.clone(), core)
.insert(core)
.set_geometry(
HalfEdgeGeom { boundary },
&mut core.layers.geometry,
)
},
)
};

View File

@ -6,7 +6,6 @@ use crate::{
geometry::LocalCurveGeom,
operations::{
build::BuildHalfEdge,
geometry::UpdateHalfEdgeGeometry,
insert::Insert,
update::{UpdateCycle, UpdateHalfEdge},
},
@ -247,15 +246,7 @@ impl JoinCycle for Cycle {
},
core,
)
.insert(core)
.set_geometry(
*core
.layers
.geometry
.of_half_edge(half_edge)
.unwrap(),
&mut core.layers.geometry,
)]
.insert(core)]
},
core,
)
@ -287,15 +278,7 @@ impl JoinCycle for Cycle {
},
core,
)
.insert(core)
.set_geometry(
*core
.layers
.geometry
.of_half_edge(half_edge)
.unwrap(),
&mut core.layers.geometry,
)]
.insert(core)]
},
core,
)

View File

@ -1,7 +1,5 @@
use crate::{
operations::{
derive::DeriveFrom, geometry::UpdateHalfEdgeGeometry, insert::Insert,
},
operations::{derive::DeriveFrom, insert::Insert},
topology::{Cycle, HalfEdge},
Core,
};
@ -14,17 +12,12 @@ impl Reverse for Cycle {
.half_edges()
.pairs()
.map(|(current, next)| {
let mut half_edge_geom =
*core.layers.geometry.of_half_edge(current).unwrap();
half_edge_geom.boundary = half_edge_geom.boundary.reverse();
HalfEdge::new(
current.curve().clone(),
next.start_vertex().clone(),
)
.insert(core)
.derive_from(current, core)
.set_geometry(half_edge_geom, &mut core.layers.geometry)
})
.collect::<Vec<_>>();

View File

@ -35,10 +35,6 @@ impl ReverseCurveCoordinateSystems
.unwrap()
.clone();
let mut half_edge_geom =
*core.layers.geometry.of_half_edge(half_edge).unwrap();
half_edge_geom.boundary = half_edge_geom.boundary.reverse();
let curve =
(half_edge.curve(), surface).reverse_curve_coordinate_systems(core);
@ -57,10 +53,6 @@ impl ReverseCurveCoordinateSystems
vertex_geom_start,
);
core.layers
.geometry
.define_half_edge(half_edge.clone(), half_edge_geom);
half_edge
}
}

View File

@ -2,8 +2,8 @@ use fj_math::Point;
use crate::{
operations::{
geometry::UpdateHalfEdgeGeometry, insert::Insert,
replace::ReplaceHalfEdge, split::SplitHalfEdge, update::UpdateHalfEdge,
insert::Insert, replace::ReplaceHalfEdge, split::SplitHalfEdge,
update::UpdateHalfEdge,
},
queries::{CycleOfHalfEdge, SiblingOfHalfEdge},
storage::Handle,
@ -53,11 +53,7 @@ impl SplitEdge for Shell {
|_, _| half_edge_b.start_vertex().clone(),
core,
)
.insert(core)
.set_geometry(
*core.layers.geometry.of_half_edge(&sibling_b).unwrap(),
&mut core.layers.geometry,
);
.insert(core);
[sibling_a, sibling_b]
};

View File

@ -7,7 +7,6 @@ use crate::{
operations::{
build::{BuildCycle, BuildHalfEdge},
derive::DeriveFrom,
geometry::UpdateHalfEdgeGeometry,
insert::Insert,
split::SplitEdge,
update::{
@ -163,10 +162,6 @@ impl SplitFace for Shell {
half_edge
.update_start_vertex(|_, _| b.start_vertex().clone(), core)
.insert(core)
.set_geometry(
*core.layers.geometry.of_half_edge(&half_edge).unwrap(),
&mut core.layers.geometry,
)
};
let dividing_half_edge_c_to_b = HalfEdge::from_sibling(
&dividing_half_edge_a_to_d,

View File

@ -2,9 +2,7 @@ use fj_math::Point;
use crate::{
geometry::LocalVertexGeom,
operations::{
derive::DeriveFrom, geometry::UpdateHalfEdgeGeometry, insert::Insert,
},
operations::{derive::DeriveFrom, insert::Insert},
storage::Handle,
topology::{Cycle, HalfEdge, Vertex},
Core,
@ -45,49 +43,18 @@ impl SplitHalfEdge for Cycle {
) -> [Handle<HalfEdge>; 2] {
let point = point.into();
let geometry = *core.layers.geometry.of_half_edge(half_edge).unwrap();
let [start, end] = [
core.layers
.geometry
.of_vertex(half_edge.start_vertex())
.unwrap()
.local_on(half_edge.curve())
.unwrap()
.position,
core.layers
.geometry
.of_vertex(
self.half_edges()
.after(half_edge)
.expect("Expected half-edge to be in cycle")
.start_vertex(),
)
.unwrap()
.local_on(half_edge.curve())
.unwrap()
.position,
];
let a = HalfEdge::new(
half_edge.curve().clone(),
half_edge.start_vertex().clone(),
)
.insert(core)
.derive_from(half_edge, core)
.set_geometry(
geometry.with_boundary([start, point]),
&mut core.layers.geometry,
);
.derive_from(half_edge, core);
let b = HalfEdge::new(
half_edge.curve().clone(),
Vertex::new().insert(core),
)
.insert(core)
.derive_from(half_edge, core)
.set_geometry(
geometry.with_boundary([point, end]),
&mut core.layers.geometry,
);
.derive_from(half_edge, core);
core.layers.geometry.define_vertex(
b.start_vertex().clone(),

View File

@ -2,10 +2,10 @@ use fj_interop::{ext::ArrayExt, Color};
use fj_math::{Point, Scalar, Vector};
use crate::{
geometry::{CurveBoundary, HalfEdgeGeom, LocalVertexGeom},
geometry::{CurveBoundary, LocalVertexGeom},
operations::{
build::{BuildCycle, BuildHalfEdge},
geometry::{UpdateCurveGeometry, UpdateHalfEdgeGeometry},
geometry::UpdateCurveGeometry,
insert::Insert,
presentation::SetColor,
update::{UpdateCycle, UpdateHalfEdge},
@ -184,11 +184,7 @@ impl SweepHalfEdge for Handle<HalfEdge> {
let half_edge = HalfEdge::unjoined(core)
.update_start_vertex(|_, _| start_vertex, core)
.update_curve(|_, _| curve.clone(), core)
.insert(core)
.set_geometry(
HalfEdgeGeom { boundary },
&mut core.layers.geometry,
);
.insert(core);
exterior =
exterior.add_half_edges([half_edge.clone()], core);

View File

@ -27,18 +27,6 @@ impl TransformObject for (&Handle<HalfEdge>, &Handle<Surface>) {
.clone()
.transform_with_cache(transform, core, cache);
let transformed_half_edge =
HalfEdge::new(curve, start_vertex).insert(core);
if let Some(half_edge_geom) =
core.layers.geometry.of_half_edge(half_edge)
{
core.layers.geometry.define_half_edge(
transformed_half_edge.clone(),
*half_edge_geom,
);
}
transformed_half_edge
HalfEdge::new(curve, start_vertex).insert(core)
}
}

View File

@ -236,7 +236,7 @@ mod tests {
use crate::{
operations::{
build::BuildShell,
geometry::{UpdateCurveGeometry, UpdateHalfEdgeGeometry},
geometry::UpdateCurveGeometry,
insert::Insert,
update::{
UpdateCycle, UpdateFace, UpdateHalfEdge, UpdateRegion,
@ -313,15 +313,7 @@ mod tests {
[half_edge
.update_curve(|_, _| curve, core)
.insert(core)
.set_geometry(
*core
.layers
.geometry
.of_half_edge(half_edge)
.unwrap(),
&mut core.layers.geometry,
)]
.insert(core)]
},
core,
)

View File

@ -192,7 +192,6 @@ mod tests {
use crate::{
operations::{
build::BuildShell,
geometry::UpdateHalfEdgeGeometry,
insert::Insert,
update::{UpdateCycle, UpdateFace, UpdateRegion, UpdateShell},
},
@ -224,14 +223,6 @@ mod tests {
cycle.update_half_edge(
cycle.half_edges().nth_circular(0),
|half_edge, core| {
let mut half_edge_geom = *core
.layers
.geometry
.of_half_edge(half_edge)
.unwrap();
half_edge_geom.boundary =
half_edge_geom.boundary.reverse();
let mut curve_geom = core
.layers
.geometry
@ -247,11 +238,7 @@ mod tests {
half_edge.curve().clone(),
half_edge.start_vertex().clone(),
)
.insert(core)
.set_geometry(
half_edge_geom,
&mut core.layers.geometry,
);
.insert(core);
core.layers.geometry.define_curve(
half_edge.curve().clone(),