mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-09 04:18:28 +00:00
Return Option
from Geometry::of_half_edge
This makes the method a bit more flexible, which is going to help in the transition away from half-edge geometry.
This commit is contained in:
parent
f3aff3baa6
commit
fb9726c51e
@ -131,10 +131,11 @@ impl Geometry {
|
|||||||
/// ## Panics
|
/// ## Panics
|
||||||
///
|
///
|
||||||
/// Panics, if the geometry of the half-edge is not defined.
|
/// Panics, if the geometry of the half-edge is not defined.
|
||||||
pub fn of_half_edge(&self, half_edge: &Handle<HalfEdge>) -> &HalfEdgeGeom {
|
pub fn of_half_edge(
|
||||||
self.half_edge
|
&self,
|
||||||
.get(half_edge)
|
half_edge: &Handle<HalfEdge>,
|
||||||
.expect("Expected geometry of half-edge to be defined")
|
) -> Option<&HalfEdgeGeom> {
|
||||||
|
self.half_edge.get(half_edge)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # Access the geometry of the provided surface
|
/// # Access the geometry of the provided surface
|
||||||
|
@ -31,7 +31,7 @@ pub trait BuildHalfEdge {
|
|||||||
start_vertex: Handle<Vertex>,
|
start_vertex: Handle<Vertex>,
|
||||||
core: &mut Core,
|
core: &mut Core,
|
||||||
) -> Handle<HalfEdge> {
|
) -> Handle<HalfEdge> {
|
||||||
let mut geometry = *core.layers.geometry.of_half_edge(sibling);
|
let mut geometry = *core.layers.geometry.of_half_edge(sibling).unwrap();
|
||||||
geometry.boundary = geometry.boundary.reverse();
|
geometry.boundary = geometry.boundary.reverse();
|
||||||
|
|
||||||
HalfEdge::new(sibling.curve().clone(), start_vertex)
|
HalfEdge::new(sibling.curve().clone(), start_vertex)
|
||||||
|
@ -265,7 +265,8 @@ impl JoinCycle for Cycle {
|
|||||||
*core
|
*core
|
||||||
.layers
|
.layers
|
||||||
.geometry
|
.geometry
|
||||||
.of_half_edge(half_edge),
|
.of_half_edge(half_edge)
|
||||||
|
.unwrap(),
|
||||||
&mut core.layers.geometry,
|
&mut core.layers.geometry,
|
||||||
)]
|
)]
|
||||||
},
|
},
|
||||||
@ -304,7 +305,8 @@ impl JoinCycle for Cycle {
|
|||||||
*core
|
*core
|
||||||
.layers
|
.layers
|
||||||
.geometry
|
.geometry
|
||||||
.of_half_edge(half_edge),
|
.of_half_edge(half_edge)
|
||||||
|
.unwrap(),
|
||||||
&mut core.layers.geometry,
|
&mut core.layers.geometry,
|
||||||
)]
|
)]
|
||||||
},
|
},
|
||||||
|
@ -15,7 +15,7 @@ impl Reverse for Cycle {
|
|||||||
.pairs()
|
.pairs()
|
||||||
.map(|(current, next)| {
|
.map(|(current, next)| {
|
||||||
let mut half_edge_geom =
|
let mut half_edge_geom =
|
||||||
*core.layers.geometry.of_half_edge(current);
|
*core.layers.geometry.of_half_edge(current).unwrap();
|
||||||
half_edge_geom.boundary = half_edge_geom.boundary.reverse();
|
half_edge_geom.boundary = half_edge_geom.boundary.reverse();
|
||||||
|
|
||||||
HalfEdge::new(
|
HalfEdge::new(
|
||||||
|
@ -35,7 +35,8 @@ impl ReverseCurveCoordinateSystems
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.clone();
|
.clone();
|
||||||
|
|
||||||
let mut half_edge_geom = *core.layers.geometry.of_half_edge(half_edge);
|
let mut half_edge_geom =
|
||||||
|
*core.layers.geometry.of_half_edge(half_edge).unwrap();
|
||||||
half_edge_geom.boundary = half_edge_geom.boundary.reverse();
|
half_edge_geom.boundary = half_edge_geom.boundary.reverse();
|
||||||
|
|
||||||
let curve =
|
let curve =
|
||||||
|
@ -55,7 +55,7 @@ impl SplitEdge for Shell {
|
|||||||
)
|
)
|
||||||
.insert(core)
|
.insert(core)
|
||||||
.set_geometry(
|
.set_geometry(
|
||||||
*core.layers.geometry.of_half_edge(&sibling_b),
|
*core.layers.geometry.of_half_edge(&sibling_b).unwrap(),
|
||||||
&mut core.layers.geometry,
|
&mut core.layers.geometry,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ impl SplitFace for Shell {
|
|||||||
.update_start_vertex(|_, _| b.start_vertex().clone(), core)
|
.update_start_vertex(|_, _| b.start_vertex().clone(), core)
|
||||||
.insert(core)
|
.insert(core)
|
||||||
.set_geometry(
|
.set_geometry(
|
||||||
*core.layers.geometry.of_half_edge(&half_edge),
|
*core.layers.geometry.of_half_edge(&half_edge).unwrap(),
|
||||||
&mut core.layers.geometry,
|
&mut core.layers.geometry,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
@ -45,7 +45,7 @@ impl SplitHalfEdge for Cycle {
|
|||||||
) -> [Handle<HalfEdge>; 2] {
|
) -> [Handle<HalfEdge>; 2] {
|
||||||
let point = point.into();
|
let point = point.into();
|
||||||
|
|
||||||
let geometry = *core.layers.geometry.of_half_edge(half_edge);
|
let geometry = *core.layers.geometry.of_half_edge(half_edge).unwrap();
|
||||||
let [start, end] = [
|
let [start, end] = [
|
||||||
core.layers
|
core.layers
|
||||||
.geometry
|
.geometry
|
||||||
|
@ -82,7 +82,7 @@ impl SweepCycle for Cycle {
|
|||||||
top_half_edges.push((
|
top_half_edges.push((
|
||||||
swept_half_edge.top_half_edge,
|
swept_half_edge.top_half_edge,
|
||||||
swept_half_edge.top_boundary,
|
swept_half_edge.top_boundary,
|
||||||
*core.layers.geometry.of_half_edge(bottom_half_edge),
|
*core.layers.geometry.of_half_edge(bottom_half_edge).unwrap(),
|
||||||
core.layers
|
core.layers
|
||||||
.geometry
|
.geometry
|
||||||
.of_curve(bottom_half_edge.curve())
|
.of_curve(bottom_half_edge.curve())
|
||||||
|
@ -32,7 +32,7 @@ impl TransformObject for (&Handle<HalfEdge>, &Handle<Surface>) {
|
|||||||
|
|
||||||
core.layers.geometry.define_half_edge(
|
core.layers.geometry.define_half_edge(
|
||||||
transformed_half_edge.clone(),
|
transformed_half_edge.clone(),
|
||||||
*core.layers.geometry.of_half_edge(half_edge),
|
*core.layers.geometry.of_half_edge(half_edge).unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
transformed_half_edge
|
transformed_half_edge
|
||||||
|
@ -318,7 +318,8 @@ mod tests {
|
|||||||
*core
|
*core
|
||||||
.layers
|
.layers
|
||||||
.geometry
|
.geometry
|
||||||
.of_half_edge(half_edge),
|
.of_half_edge(half_edge)
|
||||||
|
.unwrap(),
|
||||||
&mut core.layers.geometry,
|
&mut core.layers.geometry,
|
||||||
)]
|
)]
|
||||||
},
|
},
|
||||||
|
@ -227,7 +227,8 @@ mod tests {
|
|||||||
let mut half_edge_geom = *core
|
let mut half_edge_geom = *core
|
||||||
.layers
|
.layers
|
||||||
.geometry
|
.geometry
|
||||||
.of_half_edge(half_edge);
|
.of_half_edge(half_edge)
|
||||||
|
.unwrap();
|
||||||
half_edge_geom.boundary =
|
half_edge_geom.boundary =
|
||||||
half_edge_geom.boundary.reverse();
|
half_edge_geom.boundary.reverse();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user