00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef COIN_SBBSPTREE_H
00021
#define COIN_SBBSPTREE_H
00022
00023
#include <Inventor/lists/SbList.h>
00024
#include <Inventor/SbVec3f.h>
00025
#include <Inventor/SbBox3f.h>
00026
#include <stddef.h>
00027
00028
class SbSphere;
00029
00030
class coin_bspnode;
00031
00032 class COIN_DLL_API SbBSPTree {
00033
public:
00034 SbBSPTree(
const int maxnodepts = 64,
const int initsize = 4);
00035 ~SbBSPTree();
00036
00037
int numPoints()
const;
00038
SbVec3f getPoint(
const int idx)
const;
00039
void getPoint(
const int idx,
SbVec3f & pt)
const;
00040
void * getUserData(
const int idx)
const;
00041
void setUserData(
const int idx,
void *
const data);
00042
00043
int addPoint(
const SbVec3f & pt,
void *
const userdata = NULL);
00044
int removePoint(
const SbVec3f & pt);
00045
void removePoint(
const int idx);
00046
int findPoint(
const SbVec3f & pos)
const;
00047
void findPoints(
const SbSphere & sphere, SbList <int> & array)
const;
00048
int findClosest(
const SbSphere & sphere, SbList <int> & array)
const;
00049
int findClosest(
const SbVec3f & pos)
const;
00050
void clear(
const int initsize = 4);
00051
00052
const SbBox3f & getBBox()
const;
00053
const SbVec3f * getPointsArrayPtr()
const;
00054
00055
private:
00056
friend class coin_bspnode;
00057 SbList <SbVec3f> pointsArray;
00058 SbList <void *> userdataArray;
00059 coin_bspnode * topnode;
00060
int maxnodepoints;
00061
SbBox3f boundingBox;
00062 };
00063
00064
#endif // !COIN_SBBSPTREE_H