Skip to content

Commit

Permalink
Merge pull request #1990 from hannobraun/boundary
Browse files Browse the repository at this point in the history
Return more infor from `CurveBoundary::normalize`
  • Loading branch information
hannobraun authored Aug 8, 2023
2 parents 1b5328b + c5cee37 commit 5e44870
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
16 changes: 11 additions & 5 deletions crates/fj-core/src/geometry/boundary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,18 @@ impl<T: CurveBoundaryElement> CurveBoundary<T> {
/// Normalize the boundary
///
/// Returns a new instance of this struct, which has the bounding elements
/// in a defined order. This can be used to compare a boundary while
/// disregarding its direction.
/// in a defined order, alongside a boolean that indicates whether the new
/// instance is different from the original one.
///
/// This can be used to compare a boundary while disregarding its direction.
#[must_use]
pub fn normalize(mut self) -> Self {
self.inner.sort();
self
pub fn normalize(self) -> (Self, bool) {
let [a, b] = &self.inner;
if a > b {
(self.reverse(), true)
} else {
(self, false)
}
}
}

Expand Down
7 changes: 5 additions & 2 deletions crates/fj-core/src/validate/shell.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ impl ShellValidationError {
.bounding_vertices_of_edge(edge)
.expect("Expected edge to be part of shell")
.normalize()
.0
};

bounding_vertices_of(edge_a)
Expand Down Expand Up @@ -314,7 +315,8 @@ impl ShellValidationError {
.expect(
"Cycle should provide bounds of its own half-edge",
)
.normalize();
.normalize()
.0;

let edge = (curve, bounding_vertices);

Expand Down Expand Up @@ -394,7 +396,8 @@ impl ShellValidationError {
.expect(
"Just got edge from this cycle; must be part of it",
)
.normalize();
.normalize()
.0;

edges_by_coincidence
.entry((curve, boundary))
Expand Down

0 comments on commit 5e44870

Please sign in to comment.