KdTree.h

Go to the documentation of this file.
00001 #ifndef _KdTree_H__
00002 #define _KdTree_H__
00003 
00004 #include "Containers.h"
00005 #include "AxisAlignedBox3.h"
00006 
00007 namespace GtpVisibilityPreprocessor {
00008   
00009   class KdNode;
00011   class KdTree {
00012   public:
00013 
00015     virtual void InsertOccluder(Mesh *occluder) {
00016       //      mRoot->mOccluders.push_back(occluder);
00017     }
00018 
00020     virtual void InsertOccludee(Mesh *occludee) {
00021       //      mRoot->mOccludees.push_back(occludee);
00022     }
00023     
00025     virtual void InsertViewCell(ViewCell *viewCell) {
00026       //      mRoot->mViewcells.push_back(viewCell);
00027     }
00028     
00039     virtual bool Subdivide(KdNode *subtree);
00040 
00042     KdNode *GetRoot() const {
00043       return mRoot;
00044     }
00045 
00046   protected:
00048     KdNode *mRoot;
00050     AxisAlignedBox3 mBox;
00051   };
00052   
00053   
00054   class KdInterior;
00056   class KdNode {
00057 
00061     virtual bool IsLeaf() const = 0;
00062 
00066     virtual bool IsRoot() const {
00067       return mParent == NULL;
00068     }
00069 
00070   protected:
00073     KdInterior *mParent;
00074   };
00075 
00077   class KdInterior : public KdNode {
00078 
00079   public:
00081     virtual bool IsLeaf() const { return false; }
00082 
00083   protected:
00085     int axis;
00087     float mPosition;
00088 
00090     KdNode *mBack;
00092     KdNode *mFront;
00093 
00094   };
00095   
00096   
00098   class KdLeaf : public KdNode {
00099   public:
00101     virtual bool IsLeaf() const { return true; }
00102 
00103   protected:
00105     MeshContainer mOccluders;
00107     MeshContainer mOccludees;
00109     ViewCellContainer mViewCells;
00110   };
00111   
00112   
00113   
00114 };
00115 
00116 
00117 
00118 
00119 #endif

Generated on Fri Apr 29 19:47:56 2005 for GameTools Visibility Modules by  doxygen 1.4.2