Skip to main content

ReferenceMeshCompiler

Struct ReferenceMeshCompiler 

Source
pub struct ReferenceMeshCompiler<B> { /* private fields */ }
Expand description

Scalar reference compiler.

Generic over the boolean provider so this crate never depends on a particular one: axiolid-mesh-boolean-boolmesh is an adapter, and a different provider swaps in without touching this code.

Implementations§

Source§

impl<B> ReferenceMeshCompiler<B>

Source

pub const fn new(boolean: B) -> Self

Bind a boolean provider.

Source

pub const fn boolean(&self) -> &B

The bound provider.

Source§

impl<B: MeshBoolean> ReferenceMeshCompiler<B>

Source

pub const fn boolean_provider(&self) -> &B

The boolean provider this compiler dispatches to.

Exposed so an application can apply its own source-format set operations with the same provider the compiler uses, rather than constructing a second one that might differ.

Source

pub fn compile_mesh_with_deviation( &self, graph: &GeometryGraph, root: NodeId, options: &ExecutionOptions, ) -> GeomResult<(CompileOutcome, DeviationReport)>

Compile one root and report how far its exact surface may lie from the mesh (#232).

The outcome is MeshCompiler::compile_mesh_reported’s. The report carries a certified upper bound on the distance from every point of the exact surface to the mesh’s triangles, in world units, the paths that contributed, and whether the bound is within the chord budget asked for; see crate::DeviationReport and the deviation module for what each path’s bound rests on. A path with no certified bound is named, and makes the overall bound None. A boolean is measured against the result crate::ReferenceExactCompiler builds for it, where it builds one (#235): that costs an exact compilation and a certified search for each boolean whose result the root emits (not for the inner booleans of a chain).

An inherent method rather than a MeshCompiler one: the bound is this compiler’s claim about its own meshes, and another compiler would have to prove its own before it could make it.

§Errors

As MeshCompiler::compile_mesh_reported.

Trait Implementations§

Source§

impl<B: MeshBoolean> Backend for ReferenceMeshCompiler<B>

Source§

fn descriptor(&self) -> BackendDescriptor

Runtime descriptor and capability inventory.
Source§

impl<B: Clone> Clone for ReferenceMeshCompiler<B>

Source§

fn clone(&self) -> ReferenceMeshCompiler<B>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<B: Debug> Debug for ReferenceMeshCompiler<B>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<B: MeshBoolean> MeshCompiler for ReferenceMeshCompiler<B>

Source§

fn scratch_requirement(&self) -> ScratchRequirement

Bounded by the peak mesh size, which is data-dependent, so the honest answer is unbounded rather than an invented constant.

Source§

fn compile_mesh_reported( &self, graph: &GeometryGraph, root: NodeId, options: &ExecutionOptions, ) -> GeomResult<CompileOutcome>

Every channel on the result, and every channel an input had that the result lost, is reported with its fate (#115).

Source§

fn compile_mesh_batch_into( &self, graph: &GeometryGraph, roots: &[NodeId], options: &ExecutionOptions, destination: &mut Vec<TriMesh>, ) -> GeomResult<()>

Overriding the _into seam gives both call shapes one shared cache, so a subtree referenced by several roots is compiled once per batch.

Source§

fn compile_mesh( &self, graph: &GeometryGraph, root: NodeId, options: &ExecutionOptions, ) -> GeomResult<TriMesh>

Compile one root.
Source§

fn output_bound(&self) -> OutputBound

Outputs produced per requested root. Read more
Source§

fn compile_mesh_batch( &self, graph: &GeometryGraph, roots: &[NodeId], options: &ExecutionOptions, ) -> Result<Vec<TriMesh>, GeomError>

Compile roots as a batch. Read more
Source§

impl<B: MeshBoolean> PolylineCompiler for ReferenceMeshCompiler<B>

Curve nodes to polylines (#311): Curve2 (lifted to z = 0), Curve3 and OpenProfile, and their placements, each bisected until every span’s certified chord bound fits the budget. See crate::polyline for what is bounded how and what is refused.

Source§

fn compile_polyline( &self, graph: &GeometryGraph, root: NodeId, options: &ExecutionOptions, ) -> GeomResult<PolylineOutcome>

Compile one root to a polyline within the options’ chord budget.

Auto Trait Implementations§

§

impl<B> Freeze for ReferenceMeshCompiler<B>
where B: Freeze,

§

impl<B> RefUnwindSafe for ReferenceMeshCompiler<B>
where B: RefUnwindSafe,

§

impl<B> Send for ReferenceMeshCompiler<B>
where B: Send,

§

impl<B> Sync for ReferenceMeshCompiler<B>
where B: Sync,

§

impl<B> Unpin for ReferenceMeshCompiler<B>
where B: Unpin,

§

impl<B> UnsafeUnpin for ReferenceMeshCompiler<B>
where B: UnsafeUnpin,

§

impl<B> UnwindSafe for ReferenceMeshCompiler<B>
where B: UnwindSafe,

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.