#[non_exhaustive]pub enum PinchPolicy {
Refuse,
Accept,
}Expand description
How a triangulation treats rings that touch at a single point (#262): a hole touching the outer ring or another hole at a vertex, an outer ring pinched at a vertex, or a vertex lying on another ring’s edge.
The region such rings bound is valid, but the surface an extrusion builds over it is not a two-manifold: the walls of the two rings meet along one edge, which four faces then share. So solids refuse it and regions and surface patches accept it. The same holds for a ring that joins a hole by a seam it runs along both ways (#270): its region is the outer polygon less the hole, but an extrusion puts two coincident wall faces on the seam.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Refuse
Refuse touching rings and seams with InvalidInput naming them. For
anything that must close into a two-manifold: extrusion and loft
caps.
Accept
Triangulate the region the touching rings bound. For 2D regions and
planar surface patches: a plan footprint that is a union of shadows
touching at a corner, a space-boundary surface, a planar face of a
B-rep (whose edges are the ring edges either way, once a vertex
inside an edge, which ring_touches lists, is inserted into the
neighbouring face’s copy of that edge too). A ring joining a hole by
a seam run both ways (a keyhole, #270) is accepted too.
Trait Implementations§
Source§impl Clone for PinchPolicy
impl Clone for PinchPolicy
Source§fn clone(&self) -> PinchPolicy
fn clone(&self) -> PinchPolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for PinchPolicy
Source§impl Debug for PinchPolicy
impl Debug for PinchPolicy
impl Eq for PinchPolicy
Source§impl Hash for PinchPolicy
impl Hash for PinchPolicy
Source§impl PartialEq for PinchPolicy
impl PartialEq for PinchPolicy
impl StructuralPartialEq for PinchPolicy
Auto Trait Implementations§
impl Freeze for PinchPolicy
impl RefUnwindSafe for PinchPolicy
impl Send for PinchPolicy
impl Sync for PinchPolicy
impl Unpin for PinchPolicy
impl UnsafeUnpin for PinchPolicy
impl UnwindSafe for PinchPolicy
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