ScanOutlineOptions

Struct ScanOutlineOptions 

Source
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: f64

Finest cell the adaptive choice starts from.

§max_cell_size: f64

Coarsest cell the adaptive choice grows to.

§target_points_per_cell: f64

The adaptive choice grows the cell until the median occupied cell holds at least this many points.

§max_cells: usize

Total 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: u32

A cell needs at least this many points to count as occupied.

§noise_fraction: f64

Noise 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: f64

Widest gap (metres) the closing bridges, about one wall thickness. Clamped to MAX_GAP_LIMIT.

§open_radius_cells: u32

Radius (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: f64

Solid components smaller than this (m²) are dropped.

§min_hole_area: f64

Enclosed empty regions smaller than this (m²) are filled.

§simplify_tolerance_cells: f64

Douglas-Peucker tolerance in cells.

§snap: bool

Refit simplified edges to the point evidence.

§snap_distance_cells: f64

How far (cells) beside an edge points count as its evidence.

§min_snap_points: usize

Fewest points an edge needs before it is refitted.

§max_vertex_move_cells: f64

A 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: bool

Square edges against the dominant building direction.

§square_angle_tolerance_deg: f64

Edges within this angle (degrees) of the dominant direction, or its perpendicular, are squared.

§square_offset_tolerance: f64

An edge whose ends would move at most this far (metres) when squared is squared too, up to four times the angle tolerance.

Implementations§

Source§

impl ScanOutlineOptions

Source

pub fn min_cells(&self) -> usize

Smallest max_cells these options accept: even at the coarsest cell (one cell over the whole extent, closing radius one cell) the grid keeps its padding on every side, so it needs (2 * pad + 1)² cells.

Source

pub fn validate(&self) -> Result<(), String>

Reject options no run could honour (non-finite, non-positive sizes, inverted ranges). max_gap above MAX_GAP_LIMIT is not an error; it is clamped and reported.

Trait Implementations§

Source§

impl Clone for ScanOutlineOptions

Source§

fn clone(&self) -> ScanOutlineOptions

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ScanOutlineOptions

Source§

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

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

impl Default for ScanOutlineOptions

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for ScanOutlineOptions

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for ScanOutlineOptions

Source§

fn eq(&self, other: &ScanOutlineOptions) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for ScanOutlineOptions

Auto Trait Implementations§

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
§

impl<U> As for U

§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts 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 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
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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,