#[non_exhaustive]pub struct MeshCycleHealth {
pub health: MeshHealth,
pub unbalanced_edges: usize,
pub first_unbalanced_edge: Option<(u64, u64)>,
}Expand description
MeshHealth plus the oriented-cycle facts of the same pass.
A usable mesh is a closed oriented cycle when every undirected edge is
used equally often in each direction: the triangles then form a 2-cycle,
so the divergence sum of a signed volume does not depend on its base
point. This is weaker than MeshHealth::is_closed_two_manifold: it also
admits edges shared by four triangles (two per direction) and shells that
touch along an edge, and it refuses a T-junction, whose long edge is
matched by two short edges the audit cannot pair.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.health: MeshHealthThe structural facts audit_mesh reports for the same mesh.
unbalanced_edges: usizeUndirected edges among usable triangles whose net direction is not zero.
first_unbalanced_edge: Option<(u64, u64)>Smallest unbalanced edge as ascending (low, high) source indices.
Implementations§
Source§impl MeshCycleHealth
impl MeshCycleHealth
Sourcepub fn is_closed_oriented_cycle(&self) -> bool
pub fn is_closed_oriented_cycle(&self) -> bool
Whether the usable mesh is a closed oriented cycle: surface-usable, no degenerate triangle and no unbalanced edge.
Every closed two-manifold mesh is one. Enclosed volume additionally needs the winding number to be 0 or 1 everywhere, which no edge audit can see.
Trait Implementations§
Source§impl Clone for MeshCycleHealth
impl Clone for MeshCycleHealth
Source§fn clone(&self) -> MeshCycleHealth
fn clone(&self) -> MeshCycleHealth
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MeshCycleHealth
impl Debug for MeshCycleHealth
impl Eq for MeshCycleHealth
Source§impl PartialEq for MeshCycleHealth
impl PartialEq for MeshCycleHealth
impl StructuralPartialEq for MeshCycleHealth
Auto Trait Implementations§
impl Freeze for MeshCycleHealth
impl RefUnwindSafe for MeshCycleHealth
impl Send for MeshCycleHealth
impl Sync for MeshCycleHealth
impl Unpin for MeshCycleHealth
impl UnsafeUnpin for MeshCycleHealth
impl UnwindSafe for MeshCycleHealth
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more