This class can be used to find physically neighboring points in linear average time.
#include <avogadro/core/neighborperceiver.h>
|
float | m_maxDistance |
|
std::array< int, 3 > | m_binCount |
|
std::vector< std::vector< std::vector< std::vector< Index > > > > | m_bins |
|
Vector3 | m_minPos |
|
Vector3 | m_maxPos |
|
◆ NeighborPerceiver()
Creates a NeighborPerceiver that detects neighbors up to at least some distance.
- Parameters
-
points | Positions in 3D space to detect neighbors among. |
maxDistance | All neighbors strictly within this distance will be detected. Should be as low as possible for best performance. |
◆ getNeighborsInclusive()
Array< Index > getNeighborsInclusive |
( |
const Vector3 & |
point | ) |
const |
Returns a list of neighboring points. Linear time to number of neighbors. Can include some neighbors up to 2*sqrt(3) times the maximum distance. The list is newly allocated on every call; if performance/fragmentation is a concern, prefer NeighborPerceiver::getNeighborsInclusiveInPlace().
- Parameters
-
point | Position to return neighbors of, can be located anywhere. |
◆ getNeighborsInclusiveInPlace()
void getNeighborsInclusiveInPlace |
( |
Array< Index > & |
out, |
|
|
const Vector3 & |
point |
|
) |
| const |
Fills an array with all neighboring points. Linear time to number of neighbors. Can include some neighbors up to 2*sqrt(3) times the maximum distance.
- Parameters
-
out | Array to output neighbor indices in. |
point | Position to return neighbors of, can be located anywhere. |
The documentation for this class was generated from the following file: