pub struct SolidBoundary { /* private fields */ }Expand description
A solid’s boundary, prepared once and asked about many points.
Classifying a point casts rays and counts crossings, which is cheap. What is not cheap is what the rays are cast against: every face’s trimming rings, polylined, plus its placement’s inverse. That work depends on the solid and the chord, never on the point, and a boolean asks once per face piece. Preparing costs hundreds of times the ray casting it serves, so it is done once.
Implementations§
Source§impl SolidBoundary
impl SolidBoundary
Sourcepub fn of(
model: &Model,
solid: &Shape,
ring_chord: f64,
tol: Tolerances,
) -> OgeomResult<Self>
pub fn of( model: &Model, solid: &Shape, ring_chord: f64, tol: Tolerances, ) -> OgeomResult<Self>
Prepare a solid’s boundary for classification at a given ring chord.
§Errors
Sourcepub fn of_closed(
model: &Model,
solid: &Shape,
ring_chord: f64,
tol: Tolerances,
) -> OgeomResult<Self>
pub fn of_closed( model: &Model, solid: &Shape, ring_chord: f64, tol: Tolerances, ) -> OgeomResult<Self>
SolidBoundary::of for a solid whose shells the caller has
already found closed: their closure is not asked again, and a shell
that is open after all classifies as its faces fall.
§Errors
As SolidBoundary::of, but for an open shell.
Sourcepub fn of_kept(
model: &Model,
solid: &Shape,
ring_chord: f64,
closed: bool,
tol: Tolerances,
) -> OgeomResult<Self>
pub fn of_kept( model: &Model, solid: &Shape, ring_chord: f64, closed: bool, tol: Tolerances, ) -> OgeomResult<Self>
SolidBoundary::of, or SolidBoundary::of_closed where
closed says the caller has found the shells closed, kept in the
model for a solid of many faces: a later boundary of the solid
unchanged, at the same chord and tolerances, shares the faces
prepared and the rings drawn of them. A solid prepared for the first
time shares each face it holds as a solid kept so holds it (a
boolean’s result, the faces it passed through from its operand).
The rings are drawn at the tolerances a point is asked about at,
the first time one comes near: the boundary is to be asked at
tol.
§Errors
As SolidBoundary::of, or SolidBoundary::of_closed where
closed.
Sourcepub fn holds(
&self,
model: &Model,
point: Point,
tol: Tolerances,
) -> OgeomResult<Containment>
pub fn holds( &self, model: &Model, point: Point, tol: Tolerances, ) -> OgeomResult<Containment>
Sourcepub fn clear_from(
&self,
model: &Model,
from: Point,
to: Point,
on: &[Shape],
tol: Tolerances,
) -> OgeomResult<bool>
pub fn clear_from( &self, model: &Model, from: Point, to: Point, on: &[Shape], tol: Tolerances, ) -> OgeomResult<bool>
Whether the segment from from to to meets no face of the boundary
past the faces from lies on, on: it crosses none inside its trim
but those at its start, comes within the rings’ band of none’s
boundary, and lies in none’s surface.
A step off faces lying together reads their two sides only along
such a segment. A face of on met again further along (the far
wall of a drum stepped across) is met.
§Errors
Sourcepub fn winding(
&self,
model: &Model,
point: Point,
tol: Tolerances,
) -> OgeomResult<Option<i64>>
pub fn winding( &self, model: &Model, point: Point, tol: Tolerances, ) -> OgeomResult<Option<i64>>
The winding number of the boundary about point: how many times
more a ray from it leaves through a face, along the face’s outward
normal, than it enters through one. One inside a solid and zero
outside; past one where a boundary passing through itself encloses
a region twice. None where point lies on a face, or where every
ray met a tangency, a face’s boundary or a degenerate point.
§Errors
Sourcepub fn faces_at(
&self,
model: &Model,
point: Point,
tol: Tolerances,
) -> OgeomResult<Vec<Shape>>
pub fn faces_at( &self, model: &Model, point: Point, tol: Tolerances, ) -> OgeomResult<Vec<Shape>>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SolidBoundary
impl RefUnwindSafe for SolidBoundary
impl Send for SolidBoundary
impl Sync for SolidBoundary
impl Unpin for SolidBoundary
impl UnsafeUnpin for SolidBoundary
impl UnwindSafe for SolidBoundary
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<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.