pub struct ScanOutlineOptions {Show 19 fields
pub cell_size: Option<f64>,
pub min_cell_size: f64,
pub max_cell_size: f64,
pub target_points_per_cell: f64,
pub max_cells: usize,
pub min_points_per_cell: u32,
pub noise_fraction: f64,
pub max_gap: f64,
pub open_radius_cells: u32,
pub min_component_area: f64,
pub min_hole_area: f64,
pub simplify_tolerance_cells: f64,
pub snap: bool,
pub snap_distance_cells: f64,
pub min_snap_points: usize,
pub max_vertex_move_cells: f64,
pub square: bool,
pub square_angle_tolerance_deg: f64,
pub square_offset_tolerance: f64,
}Expand description
Every tunable of the tracer, with defaults sized for building scans in metres. Deserialises from camelCase with every field optional (absent means the default) and unknown fields refused, which is the shape the wasm binding accepts.
Fields§
§cell_size: Option<f64>Fixed cell edge length (metres). None picks it from the point density
between min_cell_size and max_cell_size.
min_cell_size: f64Finest cell the adaptive choice starts from.
max_cell_size: f64Coarsest cell the adaptive choice grows to.
target_points_per_cell: f64The adaptive choice grows the cell until the median occupied cell holds at least this many points.
max_cells: usizeTotal cell budget for the padded grid. When the extent needs more, the
cell grows to fit and ScanOutlineDiagnostics::cell_cap_hit is set.
min_points_per_cell: u32A cell needs at least this many points to count as occupied.
noise_fraction: f64Noise threshold relative to density: a cell is occupied when its count
reaches noise_fraction × the median occupied-cell count (and
min_points_per_cell).
max_gap: f64Widest gap (metres) the closing bridges, about one wall thickness.
Clamped to MAX_GAP_LIMIT.
open_radius_cells: u32Radius (cells) of the speckle-removing opening. A connected blob that
cannot hold a disk of this radius anywhere is dropped; anything that can
is kept whole. 0 disables it.
min_component_area: f64Solid components smaller than this (m²) are dropped.
min_hole_area: f64Enclosed empty regions smaller than this (m²) are filled.
simplify_tolerance_cells: f64Douglas-Peucker tolerance in cells.
snap: boolRefit simplified edges to the point evidence.
snap_distance_cells: f64How far (cells) beside an edge points count as its evidence.
min_snap_points: usizeFewest points an edge needs before it is refitted.
max_vertex_move_cells: f64A squared vertex may move at most this far (cells); a larger move is
undone. It also widens how far a moved edge may sit from the traced
boundary (the support check). Snapping bounds its own moves by the
closing radius (rebuilt corners reach about 2 × (radius + 3) cells).
square: boolSquare edges against the dominant building direction.
square_angle_tolerance_deg: f64Edges within this angle (degrees) of the dominant direction, or its perpendicular, are squared.
square_offset_tolerance: f64An edge whose ends would move at most this far (metres) when squared is squared too, up to four times the angle tolerance.
Implementations§
Trait Implementations§
Source§impl Clone for ScanOutlineOptions
impl Clone for ScanOutlineOptions
Source§fn clone(&self) -> ScanOutlineOptions
fn clone(&self) -> ScanOutlineOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ScanOutlineOptions
impl Debug for ScanOutlineOptions
Source§impl Default for ScanOutlineOptions
impl Default for ScanOutlineOptions
Source§impl<'de> Deserialize<'de> for ScanOutlineOptionswhere
ScanOutlineOptions: Default,
impl<'de> Deserialize<'de> for ScanOutlineOptionswhere
ScanOutlineOptions: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ScanOutlineOptions
impl PartialEq for ScanOutlineOptions
impl StructuralPartialEq for ScanOutlineOptions
Auto Trait Implementations§
impl Freeze for ScanOutlineOptions
impl RefUnwindSafe for ScanOutlineOptions
impl Send for ScanOutlineOptions
impl Sync for ScanOutlineOptions
impl Unpin for ScanOutlineOptions
impl UnwindSafe for ScanOutlineOptions
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.