Skip to main content

ClippingProcessor

Struct ClippingProcessor 

Source
pub struct ClippingProcessor {
    pub epsilon: f64,
}
Expand description

CSG Clipping Processor

Fields§

§epsilon: f64

Epsilon for floating point comparisons

Implementations§

Source§

impl ClippingProcessor

Source

pub fn new() -> Self

Create a new clipping processor

Source

pub fn clip_triangle(&self, triangle: &Triangle, plane: &Plane) -> ClipResult

Clip a triangle against a plane Returns triangles that are in front of the plane

Source

pub fn subtract_box( &self, mesh: &Mesh, min: Point3<f64>, max: Point3<f64>, ) -> Result<Mesh>

Box subtraction - removes everything inside the box from the mesh Uses proper CSG difference operation via subtract_mesh

Source

pub fn subtract_mesh( &self, host_mesh: &Mesh, opening_mesh: &Mesh, ) -> Result<Mesh>

Subtract opening mesh from host mesh using BSP CSG boolean operations

Source

pub fn union_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>

Union two meshes together using BSP CSG boolean operations

Source

pub fn intersection_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>

Intersect two meshes using BSP CSG boolean operations

Returns the intersection of two meshes (the volume where both overlap).

Source

pub fn union_meshes(&self, meshes: &[Mesh]) -> Result<Mesh>

Union multiple meshes together

Convenience method that sequentially unions all non-empty meshes. Skips empty meshes to avoid unnecessary CSG operations.

Source

pub fn subtract_meshes_batched( &self, host: &Mesh, voids: &[Mesh], ) -> Result<Mesh>

Subtract multiple meshes efficiently

When void count exceeds threshold, unions all voids first then performs a single subtraction. This is much more efficient for elements with many openings (e.g., floors with many penetrations).

§Arguments
  • host - The host mesh to subtract from
  • voids - List of void meshes to subtract
§Returns

The host mesh with all voids subtracted

Source

pub fn subtract_meshes_with_fallback(&self, host: &Mesh, voids: &[Mesh]) -> Mesh

Subtract meshes with fallback on failure

Attempts batched subtraction, but if it fails, returns the host mesh unchanged rather than propagating the error. This provides graceful degradation for problematic void geometries.

Source

pub fn clip_mesh_with_box( &self, mesh: &Mesh, min: Point3<f64>, max: Point3<f64>, ) -> Result<Mesh>

👎Deprecated:

Use subtract_box() for better performance

Clip mesh using bounding box (6 planes) - DEPRECATED: use subtract_box() instead Subtracts everything inside the box from the mesh

Source

pub fn clip_mesh(&self, mesh: &Mesh, plane: &Plane) -> Result<Mesh>

Clip an entire mesh against a plane

Trait Implementations§

Source§

impl Default for ClippingProcessor

Source§

fn default() -> Self

Returns the “default value” for a type. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

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

fn is_in_subset(&self) -> bool

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

fn to_subset_unchecked(&self) -> SS

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

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.