#include <PrCellStructure.h>
Public Member Functions | |
| PrCellStructure () | |
| Default constructor. | |
| PrCellStructure (int n, double *xyz_points, int max_no_cells=10) | |
| Constructor. | |
| virtual | ~PrCellStructure () |
| Destructor. | |
| void | attach (int n, const double *xyz_points) |
| Reset the PrCellStructure to a set of new points, deleting old content. | |
| void | setNumCells (int max_no_cells) |
| Set the maximum number of cells in X, Y and Z direction to 'max_no_cells'. | |
| int | getNumCells () const |
| Get the previously set limit for the maximum number of cells in the X, Y and Z direction. | |
| int | getNumNodes () const |
| Get the number of points (nodes) stored in the cell structure. | |
| Vector3D | get3dNode (int i) const |
| Get a specific point (node) in the PrCellStructure by its index. | |
| void | set3dNode (int i, const Vector3D &p) |
| Change the coordinates of a specific point in the PrCellStructure. | |
| void | getBall (const Vector3D &p, double radius, vector< int > &neighbours, int notP=0) const |
| Return all points within the ball of radius radius around the point p. | |
| void | getKNearest (const Vector3D &p, int k, vector< int > &neighbours, int notP=0) const |
| Return k nearest points to the point p. | |
| int | getI (int i, int j, int k) const |
| Get the index of the cell positioned at 'i', 'j', 'k'. | |
| void | getIJK (int ii, int &i, int &j, int &k) const |
| Get the 'i', 'j', 'k'-position of the cell indexed 'ii'. | |
| void | whichCell (const Vector3D &xyz, int &i, int &j, int &k) const |
| Locate the cell which contains the coordinate 'xyz'. | |
| void | print (ostream &os) |
| write points to stream | |
| void | scan (istream &is) |
| read points from stream and regenerate cell structure. | |
This allows one to perform various queries, such as finding all points in a ball, very efficiently. Creating the cell structure requires only O(N) operations, where N is the number of points.
Definition at line 53 of file PrCellStructure.h.
| PrCellStructure::PrCellStructure | ( | int | n, | |
| double * | xyz_points, | |||
| int | max_no_cells = 10 | |||
| ) |
Constructor.
| n | total number of points | |
| xyz_points | pointer to an array of points stored xyz-wise (The points will be copied to internal data structure. | |
| max_no_cells | indicate maximum number of cells along the X, Y and Z axis. |
Definition at line 127 of file PrCellStructure.C.
| void PrCellStructure::attach | ( | int | n, | |
| const double * | xyz_points | |||
| ) |
Reset the PrCellStructure to a set of new points, deleting old content.
| n | number of points | |
| xyz_points | pointer to the array of stored points. (The points will be copied to internal data structure). |
Definition at line 143 of file PrCellStructure.C.
Referenced by PrFastUnorganized_OP::PrFastUnorganized_OP(), PrUnorganized_OP::PrUnorganized_OP(), PrUnorganized_OP::scanRawData(), and PrFastUnorganized_OP::scanRawData().
| void PrCellStructure::setNumCells | ( | int | max_no_cells | ) | [inline] |
Set the maximum number of cells in X, Y and Z direction to 'max_no_cells'.
This must be set before the cells are generated (ie. before the 'attach()' command.
Definition at line 91 of file PrCellStructure.h.
Referenced by PrFastUnorganized_OP::PrFastUnorganized_OP(), PrUnorganized_OP::PrUnorganized_OP(), PrUnorganized_OP::scanRawData(), and PrFastUnorganized_OP::scanRawData().
| void PrCellStructure::set3dNode | ( | int | i, | |
| const Vector3D & | p | |||
| ) | [inline] |
Change the coordinates of a specific point in the PrCellStructure.
| i | index of node to change | |
| p | the new coordinates |
Definition at line 106 of file PrCellStructure.h.
Referenced by PrUnorganized_OP::set3dNode().
| void PrCellStructure::getBall | ( | const Vector3D & | p, | |
| double | radius, | |||
| vector< int > & | neighbours, | |||
| int | notP = 0 | |||
| ) | const |
Return all points within the ball of radius radius around the point p.
Don't include p itself if notP = 1.
| p | the center of the ball | |
| radius | the radius of the ball |
| neighbours | will be filled with the indexes of the neighbour points. |
| notP | if != 0, 'p' itself will not be included in the list of returned points. |
Definition at line 159 of file PrCellStructure.C.
Referenced by PrUnorganized_OP::getNeighbours().
| void PrCellStructure::getKNearest | ( | const Vector3D & | p, | |
| int | k, | |||
| vector< int > & | neighbours, | |||
| int | notP = 0 | |||
| ) | const |
Return k nearest points to the point p.
Don't include p itself if notP = 1.
| p | the point for which we seek the k nearest neighbours | |
| k | the number of neighbours we seek |
| neighbours | will be filled with the indexes of the neighbour points. |
| notP | if != 0, 'p' itself will not be included in the list of returned points. |
Definition at line 200 of file PrCellStructure.C.
| void PrCellStructure::whichCell | ( | const Vector3D & | xyz, | |
| int & | i, | |||
| int & | j, | |||
| int & | k | |||
| ) | const |
Locate the cell which contains the coordinate 'xyz'.
| xyz | we want to find the cell containing these coordinates |
| i | i-position of the located cell | |
| j | j-position of the located cell | |
| k | k-position of the located cell |
Definition at line 267 of file PrCellStructure.C.
1.5.1