pub struct ClippingProcessor {
pub epsilon: f64,
}Expand description
CSG Clipping Processor
Fields§
§epsilon: f64Epsilon for floating point comparisons
Implementations§
Source§impl ClippingProcessor
impl ClippingProcessor
Sourcepub fn clip_triangle(&self, triangle: &Triangle, plane: &Plane) -> ClipResult
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
Sourcepub fn subtract_box(
&self,
mesh: &Mesh,
min: Point3<f64>,
max: Point3<f64>,
) -> Result<Mesh>
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
Sourcepub fn subtract_mesh(
&self,
host_mesh: &Mesh,
opening_mesh: &Mesh,
) -> Result<Mesh>
pub fn subtract_mesh( &self, host_mesh: &Mesh, opening_mesh: &Mesh, ) -> Result<Mesh>
Subtract opening mesh from host mesh using BSP CSG boolean operations
Sourcepub fn union_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>
pub fn union_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>
Union two meshes together using BSP CSG boolean operations
Sourcepub fn intersection_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>
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).
Sourcepub fn union_meshes(&self, meshes: &[Mesh]) -> Result<Mesh>
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.
Sourcepub fn subtract_meshes_batched(
&self,
host: &Mesh,
voids: &[Mesh],
) -> Result<Mesh>
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 fromvoids- List of void meshes to subtract
§Returns
The host mesh with all voids subtracted
Sourcepub fn subtract_meshes_with_fallback(&self, host: &Mesh, voids: &[Mesh]) -> Mesh
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.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ClippingProcessor
impl RefUnwindSafe for ClippingProcessor
impl Send for ClippingProcessor
impl Sync for ClippingProcessor
impl Unpin for ClippingProcessor
impl UnsafeUnpin for ClippingProcessor
impl UnwindSafe for ClippingProcessor
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
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.