pub struct PointParallelHashGridSearcher3 { /* private fields */ }Expand description
§Parallel version of hash grid-based 3-D point searcher.
This class implements parallel version of 3-D point searcher by using hash grid for its internal acceleration data structure. Each point is recorded to its corresponding bucket where the hashing function is 3-D grid mapping.
Implementations§
Source§impl PointParallelHashGridSearcher3
impl PointParallelHashGridSearcher3
pub fn new_default() -> PointParallelHashGridSearcher3
Sourcepub fn new_vec(
resolution: USize3,
grid_spacing: f64,
) -> PointParallelHashGridSearcher3
pub fn new_vec( resolution: USize3, grid_spacing: f64, ) -> PointParallelHashGridSearcher3
§Constructs hash grid with given resolution and grid spacing.
This constructor takes hash grid resolution and its grid spacing as its input parameters. The grid spacing must be 3x or greater than search radius.
- parameter: resolution The resolution.
- parameter: grid_spacing The grid spacing.
Sourcepub fn new(
resolution_x: usize,
resolution_y: usize,
resolution_z: usize,
grid_spacing: f64,
) -> PointParallelHashGridSearcher3
pub fn new( resolution_x: usize, resolution_y: usize, resolution_z: usize, grid_spacing: f64, ) -> PointParallelHashGridSearcher3
§Constructs hash grid with given resolution and grid spacing.
This constructor takes hash grid resolution and its grid spacing as its input parameters. The grid spacing must be 3x or greater than search radius.
- parameter: resolution_x The resolution x.
- parameter: resolution_y The resolution y.
- parameter: resolution_z The resolution z.
- parameter: grid_spacing The grid spacing.
Sourcepub fn clone(&self) -> PointParallelHashGridSearcher3Ptr
pub fn clone(&self) -> PointParallelHashGridSearcher3Ptr
§Creates a new instance of the object with same properties than original.
- return Copy of this object.
Sourcepub fn set(&mut self, other: &PointParallelHashGridSearcher3)
pub fn set(&mut self, other: &PointParallelHashGridSearcher3)
Copy from the other instance.
Source§impl PointParallelHashGridSearcher3
impl PointParallelHashGridSearcher3
Sourcepub fn keys(&self) -> &Vec<usize>
pub fn keys(&self) -> &Vec<usize>
§Returns the hash key list.
The hash key list maps sorted point index i to its hash key value. The sorting order is based on the key value itself.
\return The hash key list.
Sourcepub fn start_index_table(&self) -> &Vec<usize>
pub fn start_index_table(&self) -> &Vec<usize>
§Returns the start index table.
The start index table maps the hash grid bucket index to starting index of the sorted point list. Assume the hash key list looks like:
\code [5|8|8|10|10|10] \endcode
Then start_index_table and end_index_table should be like:
\code […..|0|…|1|..|3|..] […..|1|…|3|..|6|..] ^5 ^8 ^10 \endcode
So that end_index_table(i) - start_index_table(i) is the number points in i-th table bucket.
\return The start index table.
Sourcepub fn end_index_table(&self) -> &Vec<usize>
pub fn end_index_table(&self) -> &Vec<usize>
§Returns the end index table.
The end index table maps the hash grid bucket index to starting index of the sorted point list. Assume the hash key list looks like:
\code [5|8|8|10|10|10] \endcode
Then start_index_table and end_index_table should be like:
\code […..|0|…|1|..|3|..] […..|1|…|3|..|6|..] ^5 ^8 ^10 \endcode
So that end_index_table(i) - start_index_table(i) is the number points in i-th table bucket.
\return The end index table.
Sourcepub fn sorted_indices(&self) -> &Vec<usize>
pub fn sorted_indices(&self) -> &Vec<usize>
§Returns the sorted indices of the points.
When the hash grid is built, it sorts the points in hash key order. But rather than sorting the original points, this class keeps the shuffled indices of the points. The list this function returns maps sorted index i to original index j.
\return The sorted indices of the points.
Sourcepub fn get_hash_key_from_bucket_index(&self, bucket_index: &ISize3) -> usize
pub fn get_hash_key_from_bucket_index(&self, bucket_index: &ISize3) -> usize
Returns the hash value for given 3-D bucket index.
- parameter: bucket_index The bucket index.
\return The hash key from bucket index.
Sourcepub fn get_bucket_index(&self, position: &Vector3D) -> ISize3
pub fn get_bucket_index(&self, position: &Vector3D) -> ISize3
Gets the bucket index from a point.
-
parameter: position The position of the point.
-
return The bucket index.
pub fn get_hash_key_from_position(&self, position: &Vector3D) -> usize
pub fn get_nearby_keys(&self, position: &Vector3D, nearby_keys: &mut [usize; 8])
Trait Implementations§
Source§impl PointNeighborSearcher3 for PointParallelHashGridSearcher3
impl PointNeighborSearcher3 for PointParallelHashGridSearcher3
Source§fn build(&mut self, points: &Vec<Vector3D>)
fn build(&mut self, points: &Vec<Vector3D>)
Source§fn for_each_nearby_point<Callback>(
&self,
origin: &Vector3D,
radius: f64,
callback: &mut Callback,
)where
Callback: ForEachNearbyPointFunc,
fn for_each_nearby_point<Callback>(
&self,
origin: &Vector3D,
radius: f64,
callback: &mut Callback,
)where
Callback: ForEachNearbyPointFunc,
Auto Trait Implementations§
impl Freeze for PointParallelHashGridSearcher3
impl RefUnwindSafe for PointParallelHashGridSearcher3
impl Send for PointParallelHashGridSearcher3
impl Sync for PointParallelHashGridSearcher3
impl Unpin for PointParallelHashGridSearcher3
impl UnwindSafe for PointParallelHashGridSearcher3
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
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