#[non_exhaustive]pub struct ScanOutlineDiagnostics {Show 25 fields
pub input_points: usize,
pub used_points: usize,
pub non_finite_points: usize,
pub outlier_points: usize,
pub cell_size: f64,
pub grid_width: usize,
pub grid_height: usize,
pub cell_cap_hit: bool,
pub coordinate_spacing_metres: f64,
pub coordinate_precision_degraded: bool,
pub max_gap_clamped: bool,
pub count_threshold: u32,
pub occupied_cells: usize,
pub solid_cells: usize,
pub components_dropped: usize,
pub holes_filled: usize,
pub ring_count: usize,
pub outer_ring_count: usize,
pub hole_ring_count: usize,
pub vertex_count: usize,
pub simplify_reinsertions: usize,
pub snapped_edges: usize,
pub dominant_angle_deg: Option<f64>,
pub squared_edges: usize,
pub reverted_moves: usize,
}Expand description
What the run did, for the UI and for judging a result. Serialises to
camelCase for the wasm binding.
#[non_exhaustive]: diagnostics grow as the tracer does, and only this
crate builds them.
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 passed in (pairs of coordinates).
used_points: usizePoints binned: finite and inside the robust extent.
non_finite_points: usizeNon-finite points skipped.
outlier_points: usizeFinite points outside the robust extent (far outliers) skipped.
cell_size: f64Cell edge length used (metres).
grid_width: usizeGrid size in cells, padding included.
grid_height: usize§cell_cap_hit: boolThe cell budget forced a coarser cell than asked for.
coordinate_spacing_metres: f64Spacing of adjacent f32 values at the largest input coordinate: the input cannot resolve anything finer (same idea and name as the scan segmentation report, #6876).
coordinate_precision_degraded: boolThat spacing exceeds a tenth of a cell: the outline follows f32 steps, not the scan. Pass coordinates local to the slab.
max_gap_clamped: boolmax_gap was above MAX_GAP_LIMIT and was clamped.
count_threshold: u32Points a cell needed to count as occupied.
occupied_cells: usizeCells occupied after thresholding, before morphology.
solid_cells: usizeCells solid after morphology and filtering.
components_dropped: usizeSolid components dropped as too small.
holes_filled: usizeEnclosed holes filled as too small.
ring_count: usize§outer_ring_count: usize§hole_ring_count: usize§vertex_count: usize§simplify_reinsertions: usizeVertices put back by the simplifier to keep rings disjoint.
snapped_edges: usizeEdges refitted to the point evidence.
dominant_angle_deg: Option<f64>Dominant building direction, degrees in [0, 90), when one was found.
squared_edges: usizeEdges rotated onto the dominant direction or its perpendicular.
reverted_moves: usizeVertex moves (snap or square) undone because they broke a ring.
Trait Implementations§
Source§impl Clone for ScanOutlineDiagnostics
impl Clone for ScanOutlineDiagnostics
Source§fn clone(&self) -> ScanOutlineDiagnostics
fn clone(&self) -> ScanOutlineDiagnostics
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ScanOutlineDiagnostics
impl Debug for ScanOutlineDiagnostics
Source§impl Default for ScanOutlineDiagnostics
impl Default for ScanOutlineDiagnostics
Source§fn default() -> ScanOutlineDiagnostics
fn default() -> ScanOutlineDiagnostics
Source§impl PartialEq for ScanOutlineDiagnostics
impl PartialEq for ScanOutlineDiagnostics
Source§impl Serialize for ScanOutlineDiagnostics
impl Serialize for ScanOutlineDiagnostics
impl StructuralPartialEq for ScanOutlineDiagnostics
Auto Trait Implementations§
impl Freeze for ScanOutlineDiagnostics
impl RefUnwindSafe for ScanOutlineDiagnostics
impl Send for ScanOutlineDiagnostics
impl Sync for ScanOutlineDiagnostics
impl Unpin for ScanOutlineDiagnostics
impl UnwindSafe for ScanOutlineDiagnostics
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§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).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.