Skip to main content

SolidBoundary

Struct SolidBoundary 

Source
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

Source

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

As classify_in_solid_exact.

Source

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.

Source

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.

Source

pub fn holds( &self, model: &Model, point: Point, tol: Tolerances, ) -> OgeomResult<Containment>

Where a point stands against this boundary.

§Errors

As classify_in_solid_exact.

Source

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

As classify_in_solid_exact.

Source

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

As classify_in_solid_exact.

Source

pub fn faces_at( &self, model: &Model, point: Point, tol: Tolerances, ) -> OgeomResult<Vec<Shape>>

The faces point lies on, within each one’s own reach.

§Errors

As classify_in_solid_exact.

Trait Implementations§

Source§

impl Debug for SolidBoundary

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.