mirror of
https://github.com/hannobraun/Fornjot
synced 2025-02-12 10:15:51 +00:00
Merge pull request #1991 from hannobraun/boundary
Add `CurveBoundary::is_normalized`, simplify `CurveBoundary::normalize`
This commit is contained in:
commit
7681261f03
@ -28,20 +28,26 @@ impl<T: CurveBoundaryElement> CurveBoundary<T> {
|
||||
Self { inner: [b, a] }
|
||||
}
|
||||
|
||||
/// Indicate whether the boundary is normalized
|
||||
///
|
||||
/// If the boundary is normalized, its bounding elements are in a defined
|
||||
/// order, and calling `normalize` will return an identical instance.
|
||||
pub fn is_normalized(&self) -> bool {
|
||||
let [a, b] = &self.inner;
|
||||
a <= b
|
||||
}
|
||||
|
||||
/// Normalize the boundary
|
||||
///
|
||||
/// Returns a new instance of this struct, which has the bounding elements
|
||||
/// 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.
|
||||
/// in a defined order. This can be used to compare boundaries while
|
||||
/// disregarding their direction.
|
||||
#[must_use]
|
||||
pub fn normalize(self) -> (Self, bool) {
|
||||
let [a, b] = &self.inner;
|
||||
if a > b {
|
||||
(self.reverse(), true)
|
||||
pub fn normalize(self) -> Self {
|
||||
if self.is_normalized() {
|
||||
self
|
||||
} else {
|
||||
(self, false)
|
||||
self.reverse()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -235,7 +235,6 @@ impl ShellValidationError {
|
||||
.bounding_vertices_of_edge(edge)
|
||||
.expect("Expected edge to be part of shell")
|
||||
.normalize()
|
||||
.0
|
||||
};
|
||||
|
||||
bounding_vertices_of(edge_a)
|
||||
@ -315,8 +314,7 @@ impl ShellValidationError {
|
||||
.expect(
|
||||
"Cycle should provide bounds of its own half-edge",
|
||||
)
|
||||
.normalize()
|
||||
.0;
|
||||
.normalize();
|
||||
|
||||
let edge = (curve, bounding_vertices);
|
||||
|
||||
@ -396,8 +394,7 @@ impl ShellValidationError {
|
||||
.expect(
|
||||
"Just got edge from this cycle; must be part of it",
|
||||
)
|
||||
.normalize()
|
||||
.0;
|
||||
.normalize();
|
||||
|
||||
edges_by_coincidence
|
||||
.entry((curve, boundary))
|
||||
|
Loading…
Reference in New Issue
Block a user