#[non_exhaustive]pub struct ReconstructionEvidence {
pub input_points: usize,
pub used_points: usize,
pub output_triangles: usize,
pub output_components: usize,
pub closed: bool,
pub achieved_edge_length: f64,
pub sample_spacing: f64,
pub used_normals: bool,
pub interpolated_triangles: usize,
}Expand description
Counters describing one reconstruction.
Every field is a fact about the computation, never a quality verdict: whether 12% unsupported area is acceptable is the caller’s decision, not the kernel’s.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.input_points: usizePoints supplied.
used_points: usizePoints the provider actually used.
Lower than input_points when the provider discarded outliers or
duplicates. A large gap is worth a caller’s attention.
output_triangles: usizeTriangles in the result.
output_components: usizeConnected components in the result.
A capture with gaps often reconstructs into several shells. Reporting it lets a caller detect the split here rather than downstream.
closed: boolWhether the result is a closed two-manifold solid.
achieved_edge_length: f64Edge length the provider achieved, in model units.
Reported whether or not the caller stated one, so a
FromSampleSpacing request still learns what it got.
sample_spacing: f64Median distance between neighbouring input samples.
The scale the capture actually resolves. A result finer than this is interpolation, not measurement.
used_normals: boolWhether per-point normals were used.
False when the cloud carried none, or the request declined them, or the provider could not use them. Distinguishes a normal-driven result from a positions-only one.
interpolated_triangles: usizeTriangles whose vertices came from interpolation across a gap in the data rather than from measured samples.
This is the honest measure of how much of the surface is invented. Zero means every triangle rests on real points.
Implementations§
Source§impl ReconstructionEvidence
impl ReconstructionEvidence
Sourcepub fn measured() -> ReconstructionEvidence
pub fn measured() -> ReconstructionEvidence
Start from a cleared record and fill in what the provider measured.
#[non_exhaustive] keeps the struct additive, so a provider outside
this crate cannot build one with a literal. This constructor is the
supported route: take the default and set the fields you measured.
A field left at its default is honestly “not measured” rather than a
value invented to satisfy the type.
Trait Implementations§
Source§impl Clone for ReconstructionEvidence
impl Clone for ReconstructionEvidence
Source§fn clone(&self) -> ReconstructionEvidence
fn clone(&self) -> ReconstructionEvidence
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ReconstructionEvidence
impl Debug for ReconstructionEvidence
Source§impl Default for ReconstructionEvidence
impl Default for ReconstructionEvidence
Source§fn default() -> ReconstructionEvidence
fn default() -> ReconstructionEvidence
Source§impl PartialEq for ReconstructionEvidence
impl PartialEq for ReconstructionEvidence
impl StructuralPartialEq for ReconstructionEvidence
Auto Trait Implementations§
impl Freeze for ReconstructionEvidence
impl RefUnwindSafe for ReconstructionEvidence
impl Send for ReconstructionEvidence
impl Sync for ReconstructionEvidence
impl Unpin for ReconstructionEvidence
impl UnwindSafe for ReconstructionEvidence
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 more