pub struct PointCloud<'a, T> { /* private fields */ }
Expand description
The core datastructure of the package. Stores the points and the distance function.
Implementations§
Source§impl<'a, T> PointCloud<'a, T>
impl<'a, T> PointCloud<'a, T>
Sourcepub fn new(dist_fn: fn(&T, &T) -> f64) -> Self
pub fn new(dist_fn: fn(&T, &T) -> f64) -> Self
Constructs a new PointCloud<T>
.
It accepts a function to compute distance between any 2 objects.
§Examples
extern crate knn;
use knn::PointCloud;
let manhattan_dist = |p: &[f64;2], q: &[f64;2]| -> f64 {(p[0] - q[0]).abs() + (p[1] - q[1]).abs()};
let pc = PointCloud::new(manhattan_dist);
Sourcepub fn add_point(&mut self, p: &'a T)
pub fn add_point(&mut self, p: &'a T)
Adds a point to the PointCloud.
It accepts a reference to an object.
§Examples
extern crate knn;
use knn::PointCloud;
let dummy_dist = |p: &[f64;2], q: &[f64;2]| -> f64 {0.0};
let mut pc = PointCloud::new(dummy_dist);
let p = [1.89, 5.63];
pc.add_point(&p);
Sourcepub fn get_nearest_k(&self, p: &T, k: usize) -> Vec<(f64, &T)>
pub fn get_nearest_k(&self, p: &T, k: usize) -> Vec<(f64, &T)>
Gets the k nearest neighbours of an object.
It accepts a reference to the object and how many neighbours to return.
§Example
extern crate knn;
use knn::PointCloud;
let manhattan_dist = |p: &[f64;2], q: &[f64;2]| -> f64 {(p[0] - q[0]).abs() + (p[1] - q[1]).abs()};
let mut pc = PointCloud::new(manhattan_dist);
let points = vec![[1.0, 1.0], [2.0, 2.0], [3.0, 2.0]];
for p in &points {
pc.add_point(&p);
}
let q = [0.5, 0.5];
pc.get_nearest_k(&q, 2);
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Get the len / number of objects in PointCloud Example:
extern crate knn;
use knn::PointCloud;
let manhattan_dist = |p: &[f64;2], q: &[f64;2]| -> f64 {(p[0] - q[0]).abs() + (p[1] - q[1]).abs()};
let mut pc = PointCloud::new(manhattan_dist);
let points = vec![[1.0, 1.0], [2.0, 2.0], [3.0, 2.0]];
for p in &points {
pc.add_point(&p);
}
pc.len();
Trait Implementations§
Source§impl<'a, T: Clone> Clone for PointCloud<'a, T>
impl<'a, T: Clone> Clone for PointCloud<'a, T>
Source§fn clone(&self) -> PointCloud<'a, T>
fn clone(&self) -> PointCloud<'a, T>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<'a, T> Freeze for PointCloud<'a, T>
impl<'a, T> RefUnwindSafe for PointCloud<'a, T>where
T: RefUnwindSafe,
impl<'a, T> Send for PointCloud<'a, T>where
T: Sync,
impl<'a, T> Sync for PointCloud<'a, T>where
T: Sync,
impl<'a, T> Unpin for PointCloud<'a, T>
impl<'a, T> UnwindSafe for PointCloud<'a, T>where
T: RefUnwindSafe,
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