#include <SimpleKDTree.h>
Inherits KDTree.
Inheritance diagram for SimpleKDTree:
Public Member Functions | |
SimpleKDTree (unsigned int min_primitives=4, unsigned int max_depth=12) | |
virtual | ~SimpleKDTree () |
virtual void | buildTree (const PrimitiveList &list, const Box &bbox) |
Private Member Functions | |
virtual void | setBestSplit (Node *node) const |
void | buildTree (Node *node, unsigned int depth) const |
Definition at line 15 of file SimpleKDTree.h.
SimpleKDTree::SimpleKDTree | ( | unsigned int | min_primitives = 4 , |
|
unsigned int | max_depth = 12 | |||
) | [inline] |
Constructor
min_primitives | Minimal number of primitives in one node | |
max_depth | Maximal tree depth |
Definition at line 23 of file SimpleKDTree.h.
SimpleKDTree::~SimpleKDTree | ( | ) | [virtual] |
Destructor
Definition at line 9 of file SimpleKDTree.cpp.
void SimpleKDTree::buildTree | ( | const PrimitiveList & | list, | |
const Box & | bbox | |||
) | [virtual] |
Build the kd-tree from the given primitive list.
list | List of all primitives | |
bbox | Overall bounding box |
Definition at line 19 of file SimpleKDTree.cpp.
References KDTree::buildTree(), LOG, and KDTree::mRootNode.
Referenced by buildTree().
void SimpleKDTree::setBestSplit | ( | Node * | node | ) | const [private, virtual] |
Find and assign optimal split location and direction for given node. This implementation simply returns spatial median
node | Current node |
Definition at line 36 of file SimpleKDTree.cpp.
References Primitive::bounds(), Box::maxVertex(), Box::minVertex(), NO_AXIS, Node::primitive(), Node::primitives_count(), Node::setSplitAxis(), Node::setSplitPlane(), Node::splitAxis(), X_AXIS, Y_AXIS, and Z_AXIS.
Referenced by buildTree().
void SimpleKDTree::buildTree | ( | Node * | node, | |
unsigned int | depth | |||
) | const [private] |
Recursive tree building method
node | Current parent node | |
depth | Current node depth |
Definition at line 72 of file SimpleKDTree.cpp.
References Node::add(), Primitive::bounds(), buildTree(), Node::clear_primitives(), Node::left(), NO_AXIS, Node::primitive(), Node::primitives_count(), Node::right(), setBestSplit(), Node::setLeftRight(), Node::setSplitAxis(), Node::splitAxis(), Node::splitPlane(), and KDTree::terminate().