pub struct KdTree { /* private fields */ }Expand description
Cache-friendly KD-tree for 3D point clouds.
Implementations§
Source§impl KdTree
impl KdTree
Sourcepub fn from_slices(x: &[f32], y: &[f32], z: &[f32]) -> KdTree
pub fn from_slices(x: &[f32], y: &[f32], z: &[f32]) -> KdTree
Builds a KD-tree from coordinate slices.
Sourcepub fn from_point_cloud(cloud: &PointCloud) -> Result<KdTree, SpatialError>
pub fn from_point_cloud(cloud: &PointCloud) -> Result<KdTree, SpatialError>
Builds a KD-tree from any point cloud with XYZ positions.
Sourcepub fn radius_reaches(
&self,
x: f32,
y: f32,
z: f32,
radius: f32,
target: usize,
) -> bool
pub fn radius_reaches( &self, x: f32, y: f32, z: f32, radius: f32, target: usize, ) -> bool
Returns whether at least target points lie within radius of the
query, stopping as soon as the threshold is reached. Unlike
radius_search this allocates nothing
and early-exits, which is much faster for density tests (outlier removal).
Source§impl KdTree
impl KdTree
Sourcepub fn nearest_k_into(
&self,
x: f32,
y: f32,
z: f32,
k: usize,
out: &mut Vec<Neighbor>,
)
pub fn nearest_k_into( &self, x: f32, y: f32, z: f32, k: usize, out: &mut Vec<Neighbor>, )
Finds up to k nearest neighbors sorted by ascending distance, reusing
the caller-provided output buffer.
Sourcepub fn nearest_k_unsorted_into(
&self,
x: f32,
y: f32,
z: f32,
k: usize,
out: &mut Vec<Neighbor>,
)
pub fn nearest_k_unsorted_into( &self, x: f32, y: f32, z: f32, k: usize, out: &mut Vec<Neighbor>, )
Finds up to k nearest neighbors without sorting the result, reusing the
caller-provided output buffer. This is faster for callers that only need
the neighbor set, such as covariance and mean-distance calculations.
Trait Implementations§
Source§impl ChunkedNearestNeighborIndex for KdTree
impl ChunkedNearestNeighborIndex for KdTree
Source§impl ChunkedRadiusSearchIndex for KdTree
impl ChunkedRadiusSearchIndex for KdTree
Source§impl NearestNeighborIndex for KdTree
impl NearestNeighborIndex for KdTree
Source§impl RadiusSearchIndex for KdTree
impl RadiusSearchIndex for KdTree
Auto Trait Implementations§
impl Freeze for KdTree
impl RefUnwindSafe for KdTree
impl Send for KdTree
impl Sync for KdTree
impl Unpin for KdTree
impl UnsafeUnpin for KdTree
impl UnwindSafe for KdTree
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§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>
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 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>
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