PointParallelHashGridSearcher3

Struct PointParallelHashGridSearcher3 

Source
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

Source

pub fn new_default() -> PointParallelHashGridSearcher3

Source

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

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

pub fn builder() -> Builder

Returns builder fox PointHashGridSearcher3.

Source

pub fn clone(&self) -> PointParallelHashGridSearcher3Ptr

§Creates a new instance of the object with same properties than original.
  • return Copy of this object.
Source

pub fn set(&mut self, other: &PointParallelHashGridSearcher3)

Copy from the other instance.

Source§

impl PointParallelHashGridSearcher3

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn get_hash_key_from_position(&self, position: &Vector3D) -> usize

Source

pub fn get_nearby_keys(&self, position: &Vector3D, nearby_keys: &mut [usize; 8])

Trait Implementations§

Source§

impl PointNeighborSearcher3 for PointParallelHashGridSearcher3

Source§

fn type_name() -> String

Returns the type name of the derived class.
Source§

fn build(&mut self, points: &Vec<Vector3D>)

Builds internal acceleration structure for given points list.
Source§

fn for_each_nearby_point<Callback>( &self, origin: &Vector3D, radius: f64, callback: &mut Callback, )
where Callback: ForEachNearbyPointFunc,

Invokes the callback function for each nearby point around the origin within given radius. Read more
Source§

fn has_nearby_point(&self, origin: &Vector3D, radius: f64) -> bool

Returns true if there are any nearby points for given origin within radius. Read more

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
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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V