#[non_exhaustive]pub enum SolidRequirements {
Structural,
Enclosing,
Oriented,
}Expand description
How strictly an operand must be formed.
Levels are cumulative: each includes the checks below it.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Structural
Indices in range, no NaN/infinite coordinates, at least one triangle.
The floor. An operand failing this is malformed data, not geometry.
Enclosing
Structural, plus a finite, non-zero enclosed signed volume.
Volume accumulation that overflows or otherwise becomes non-finite is rejected rather than treated as evidence of a valid interior.
A flat or self-cancelling shell has no interior, so no set operation on it has a defined meaning.
Oriented
Enclosing, plus outward orientation (positive signed volume).
An inside-out operand would silently invert the operation, turning a difference into an intersection without any error.
Implementations§
Source§impl SolidRequirements
impl SolidRequirements
Sourcepub fn validate(self, mesh: &TriMesh, role: &str) -> GeomResult<()>
pub fn validate(self, mesh: &TriMesh, role: &str) -> GeomResult<()>
Validate one operand at this level.
Sourcepub fn validate_operands(
self,
subject: &TriMesh,
tools: &[&TriMesh],
) -> GeomResult<()>
pub fn validate_operands( self, subject: &TriMesh, tools: &[&TriMesh], ) -> GeomResult<()>
Validate a subject and its tools, naming each operand by index.
Trait Implementations§
Source§impl Clone for SolidRequirements
impl Clone for SolidRequirements
Source§fn clone(&self) -> SolidRequirements
fn clone(&self) -> SolidRequirements
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more