![]() |
http://www.sim.no http://www.coin3d.org |
The SbBSPTree class provides a binary space partitioning container.This class can be used to organize searches for 3D points or normals in a set in O(log(n)) time. More...
#include <Inventor/SbBSPTree.h>
Public Member Functions | |
SbBSPTree (const int maxnodepts=64, const int initsize=4) | |
~SbBSPTree () | |
int | numPoints () const |
SbVec3f | getPoint (const int idx) const |
void | getPoint (const int idx, SbVec3f &pt) const |
void * | getUserData (const int idx) const |
void | setUserData (const int idx, void *const data) |
int | addPoint (const SbVec3f &pt, void *const userdata=NULL) |
int | removePoint (const SbVec3f &pt) |
void | removePoint (const int idx) |
int | findPoint (const SbVec3f &pos) const |
int | findClosest (const SbVec3f &pos) const |
void | clear (const int initsize=4) |
void | findPoints (const SbSphere &sphere, SbIntList &array) const |
int | findClosest (const SbSphere &sphere, SbIntList &array) const |
const SbBox3f & | getBBox () const |
const SbVec3f * | getPointsArrayPtr () const |
void | findPoints (const SbSphere &sphere, SbList< int > &array) const |
int | findClosest (const SbSphere &sphere, SbList< int > &array) const |
Friends | |
class | coin_bspnode |
The SbBSPTree class provides a binary space partitioning container.
This class can be used to organize searches for 3D points or normals in a set in O(log(n)) time.
Note: SbBSPTree is an extension to the original Open Inventor API.
SbBSPTree::SbBSPTree | ( | const int | maxnodepts = 64 , |
const int | initsize = 4 |
||
) |
Constructor with maxnodepts specifying the maximum number of points in a node before it must be split, and initsize is the number of initially allocated points in the growable points array. If you know approximately the number of points which will be added to the tree, it will help the performance if you supply this in initsize.
SbBSPTree::~SbBSPTree | ( | ) |
Destructor. Frees used memory.
int SbBSPTree::numPoints | ( | ) | const |
Returns the number of points in the BSP tree.
References SbList< Type >::getLength().
Referenced by SoToVRMLAction::beginTraversal(), and SoToVRML2Action::doReuseGeometryNodes().
SbVec3f SbBSPTree::getPoint | ( | const int | idx | ) | const |
Returns the point at index idx.
References SbList< Type >::getLength().
Referenced by SoVectorizePSAction::printItem().
void SbBSPTree::getPoint | ( | const int | idx, |
SbVec3f & | pt | ||
) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
References SbList< Type >::getLength().
void * SbBSPTree::getUserData | ( | const int | idx | ) | const |
Returns the user data for the point at index idx.
References SbList< Type >::getLength().
void SbBSPTree::setUserData | ( | const int | idx, |
void *const | data | ||
) |
Sets the user data for the point at index idx to data.
References SbList< Type >::getLength().
int SbBSPTree::addPoint | ( | const SbVec3f & | pt, |
void *const | data = NULL |
||
) |
Adds a new point pt to the BSP tree, and returns the index to the new point. The user data for that point will be set to data.
If the point already exists in the BSP tree, the index to the old point will be returned. The user data for that point will not be changed.
References SbList< Type >::append(), SbBox3f::extendBy(), and SbList< Type >::getLength().
Referenced by SoToVRMLAction::beginTraversal(), and SoToVRML2Action::doReuseGeometryNodes().
int SbBSPTree::removePoint | ( | const SbVec3f & | pt | ) |
Removes the point with coordinates pt, and returns the index to the removed point. -1 is returned if no point with those coordinates could be found.
Referenced by removePoint().
void SbBSPTree::removePoint | ( | const int | idx | ) |
Removes the point at index idx.
References SbList< Type >::getLength(), and removePoint().
int SbBSPTree::findPoint | ( | const SbVec3f & | pos | ) | const |
Will search the tree, and return the index to the point with coordinates matching pos. If no such point can be found, -1 is returned.
int SbBSPTree::findClosest | ( | const SbVec3f & | pos | ) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
References SbList< Type >::getLength(), SbBox3f::getMax(), SbBox3f::getMin(), SbVec3f::length(), SbSphere::setRadius(), and SbList< Type >::truncate().
void SbBSPTree::clear | ( | const int | initsize = 4 | ) |
Will empty all points from the BSP tree.
References SbBox3f::makeEmpty(), and SbList< Type >::truncate().
Will return the index to the point closest to the center of sphere. Indices to all points inside the sphere is returned in arr. If no points can be found inside the sphere, -1 is returned.
References findPoints(), SbSphere::getCenter(), and SbPList::getLength().
const SbBox3f & SbBSPTree::getBBox | ( | ) | const |
Will return the bounding box of all points in the BSP tree.
const SbVec3f * SbBSPTree::getPointsArrayPtr | ( | void | ) | const |
Returns a pointer to the array of points inserted into the BPS tree.
References SbList< Type >::getArrayPtr().
Referenced by SoToVRMLAction::beginTraversal(), and SoToVRML2Action::doReuseGeometryNodes().
WARNING: Please don't use this function. It can cause hard to find bugs on the Windows platform if your application is linked against a different CRT than your Coin DLL.
Use void findPoints(const SbSphere &sphere, SbIntList & array) instead.
WARNING: Please don't use this function. It can cause hard to find bugs on the Windows platform if your application is linked against a different CRT than your Coin DLL.
Use int findClosest(const SbSphere &sphere, SbIntList & arr) instead.
References findPoints(), SbSphere::getCenter(), and SbList< Type >::getLength().
Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.
Generated on Fri Feb 17 2017 for Coin by Doxygen. 1.8.13