Go to the source code of this file.
Classes | |
class | AABBTree |
class | AABBTreeNode |
Defines | |
#define | EXWORD udword |
#define | EXWORD udword |
#define | IMPLEMENT_TREE(base_class, volume) |
#define | IMPLEMENT_TREE(base_class, volume) |
TO BE DOCUMENTED. | |
Typedefs | |
typedef void(* | CullingCallback )(udword nb_primitives, udword *node_primitives, BOOL need_clipping, void *user_data) |
typedef bool(* | WalkingCallback )(const AABBTreeNode *current, udword depth, void *user_data) |
#define IMPLEMENT_TREE | ( | base_class, | |
volume | |||
) |
public: \ /* Constructor / Destructor */ \ base_class(); \ ~base_class(); \ /* Data access */ \ inline_ const volume* Get##volume() const { return &mBV; } \ /* Clear the last bit */ \ inline_ const base_class* GetPos() const { return (const base_class*)(mPos&~1); } \ inline_ const base_class* GetNeg() const { const base_class* P = GetPos(); return P ? P+1 : null;} \ \ /* We don't need to test both nodes since we can't have one without the other */ \ inline_ bool IsLeaf() const { return !GetPos(); } \ \ /* Stats */ \ inline_ udword GetNodeSize() const { return SIZEOFOBJECT; } \ protected: \ /* Tree-independent data */ \ /* Following data always belong to the BV-tree, regardless of what the tree actually contains.*/ \ /* Whatever happens we need the two children and the enclosing volume.*/ \ volume mBV; /* Global bounding-volume enclosing all the node-related primitives */ \ EXWORD mPos; /* "Positive" & "Negative" children */
#define IMPLEMENT_TREE | ( | base_class, | |
volume | |||
) |
public: \ /* Constructor / Destructor */ \ base_class(); \ ~base_class(); \ /* Data access */ \ inline_ const volume* Get##volume() const { return &mBV; } \ /* Clear the last bit */ \ inline_ const base_class* GetPos() const { return (const base_class*)(mPos&~1); } \ inline_ const base_class* GetNeg() const { return (const base_class*)(mNeg&~1); } \ \ /* inline_ bool IsLeaf() const { return (!GetPos() && !GetNeg()); } */ \ /* We don't need to test both nodes since we can't have one without the other */ \ inline_ bool IsLeaf() const { return !GetPos(); } \ \ /* Stats */ \ inline_ udword GetNodeSize() const { return SIZEOFOBJECT; } \ protected: \ /* Tree-independent data */ \ /* Following data always belong to the BV-tree, regardless of what the tree actually contains.*/ \ /* Whatever happens we need the two children and the enclosing volume.*/ \ volume mBV; /* Global bounding-volume enclosing all the node-related primitives */ \ EXWORD mPos; /* "Positive" child */ \ EXOWRD mNeg; /* "Negative" child */
TO BE DOCUMENTED.
typedef void(* CullingCallback)(udword nb_primitives, udword *node_primitives, BOOL need_clipping, void *user_data) |
Definition at line 81 of file OPC_AABBTree.h.
typedef bool(* WalkingCallback)(const AABBTreeNode *current, udword depth, void *user_data) |
User-callback, called for each node by the walking code.
current | [in] current node |
depth | [in] current node's depth |
user_data | [in] user-defined data |
Definition at line 111 of file OPC_AABBTree.h.