public |
Inheritance Graph
graph BT
Octree
Octree --> TriangleTree
RandomizedSampleTree --> Octree
click Octree "classMinSG_1_1TriangleTrees_1_1Octree"
click TriangleTree "classMinSG_1_1TriangleTrees_1_1TriangleTree"
click RandomizedSampleTree "classMinSG_1_1TriangleTrees_1_1RandomizedSampleTree"
Description
One object of this class represents a node in an octree.
Author: Benjamin Eikel
Date: 2011-07-26
Protected Attributes
std::vector< TriangleAccessor > | triangleStorage Internal storage of the triangles inside this node. |
std::vector< std::unique_ptr< Octree > > | children Eight children of this node or empty if leaf. |
const uint32_t | maxTrianglesPerNode |
const float | looseFactor Fraction of bounding box enlargement. |
Public Functions
Octree( Rendering::Mesh * mesh, uint32_t trianglesPerNode, float enlargementFactor) | |
~Octree() Clean up memory for possible children. |
|
bool | isLeaf() const |
float | getLooseFactor() const |
std::vector< const TriangleTree * > | getChildren() const |
const TriangleAccessor & | getTriangle(uint32_t index) const |
uint32_t | getTriangleCount() const |
bool | shouldSplit() const |
void | split() |
bool | contains(const TriangleAccessor & triangle) const |
void | fetchAttributes( Util::AttributeProvider * container) const |
Protected Functions
Octree(const Geometry::Box & childBound, const Octree & parent) | |
Octree * | createChild(const Geometry::Box & childBound, const Octree & parent) const Return a child node. Needed for polymorphism. |
Documentation
variable
MinSG::TriangleTrees::Octree::triangleStorage
protected |
std::vector< TriangleAccessor > triangleStorage |
Internal storage of the triangles inside this node.
Defined in MinSG/Ext/TriangleTrees/Octree.h:136
variable
MinSG::TriangleTrees::Octree::children
protected |
std::vector< std::unique_ptr< Octree > > children |
Eight children of this node or empty if leaf.
Defined in MinSG/Ext/TriangleTrees/Octree.h:139
variable
MinSG::TriangleTrees::Octree::maxTrianglesPerNode
protected |
const uint32_t maxTrianglesPerNode |
Maximum number of triangles stored in a node. If the actual number is bigger, the node will be split.
Defined in MinSG/Ext/TriangleTrees/Octree.h:145
variable
MinSG::TriangleTrees::Octree::looseFactor
protected |
const float looseFactor |
Fraction of bounding box enlargement.
Defined in MinSG/Ext/TriangleTrees/Octree.h:148
function
MinSG::TriangleTrees::Octree::Octree
public | explicit |
Octree( | Rendering::Mesh * | mesh, |
uint32_t | trianglesPerNode, | |
float | enlargementFactor | |
) |
Create an Octree root node with TriangleAccessors to all given triangles.
Parameters
- mesh
- Mesh containing the triangles.
- trianglesPerNode
- Maximum number of triangles to store inside a node. Bigger nodes will be split.
- enlargementFactor
- Increase of the size of the bounding box. Must not be smaller than one. If larger than one, this Octree will be an Loose Octree .
Defined in MinSG/Ext/TriangleTrees/Octree.h:48
function
MinSG::TriangleTrees::Octree::~Octree
public | virtual |
~Octree( | ) |
Clean up memory for possible children.
Defined in MinSG/Ext/TriangleTrees/Octree.h:51
function
MinSG::TriangleTrees::Octree::isLeaf
public | const | inline | virtual |
bool isLeaf( | ) const |
Tell if the node is a leaf node.
Returns
true
if the node is a leaf andfalse
if it is an inner node.
Defined in MinSG/Ext/TriangleTrees/Octree.h:58
function
MinSG::TriangleTrees::Octree::getLooseFactor
public | const | inline |
float getLooseFactor( | ) const |
Return the loose factor of this node.
Returns
Loose factor
Defined in MinSG/Ext/TriangleTrees/Octree.h:67
function
MinSG::TriangleTrees::Octree::getChildren
public | const | inline | virtual |
std::vector< const TriangleTree * > getChildren( | ) const |
Retrieve the eight child nodes.
Returns
Pointers to children.
Defined in MinSG/Ext/TriangleTrees/Octree.h:76
function
MinSG::TriangleTrees::Octree::getTriangle
public | const | virtual |
const TriangleAccessor & getTriangle( | uint32_t | index ) const |
Return one triangle.
Parameters
- index
- Index of triangle stored in this node.
Returns
Indices stored in this node.
Defined in MinSG/Ext/TriangleTrees/Octree.h:91
function
MinSG::TriangleTrees::Octree::getTriangleCount
public | const | inline | virtual |
uint32_t getTriangleCount( | ) const |
Return the number of triangles that are stored in this tree node.
Returns
Triangle count
Defined in MinSG/Ext/TriangleTrees/Octree.h:98
function
MinSG::TriangleTrees::Octree::shouldSplit
public | const | inline |
bool shouldSplit( | ) const |
Check if this node should be split.
Returns
true
if this node should be split.
Defined in MinSG/Ext/TriangleTrees/Octree.h:107
function
MinSG::TriangleTrees::Octree::split
public |
void split( | ) |
Split this node if it is a leaf. It creates two children and converts this node into an inner node.
Defined in MinSG/Ext/TriangleTrees/Octree.h:115
function
MinSG::TriangleTrees::Octree::contains
public | const | virtual |
bool contains( | const TriangleAccessor & | triangle ) const |
Check if the triangle fits into the bounding box of the tree node.
Parameters
- triangle
- Triangle to check.
Returns
true
if the triangle is inside or at most touching the bounds.
Defined in MinSG/Ext/TriangleTrees/Octree.h:125
function
MinSG::TriangleTrees::Octree::fetchAttributes
public | const | virtual |
void fetchAttributes( | Util::AttributeProvider * | container ) const |
Add attributes specific to this object to the given container.
Parameters
- container
- Container for attributes.
Defined in MinSG/Ext/TriangleTrees/Octree.h:132
function
MinSG::TriangleTrees::Octree::Octree
protected | explicit |
Octree( | const Geometry::Box & | childBound, |
const Octree & | parent | |
) |
Create a new Octree node. This is used to create child nodes. The creating node has to assign the triangles to the node.
Parameters
- childBound
- Axis-aligned bounding box for the child.
- parent
- Parent node which is used to copy the parameters from.
Defined in MinSG/Ext/TriangleTrees/Octree.h:159
function
MinSG::TriangleTrees::Octree::createChild
protected | const | inline | virtual |
Octree * createChild( | const Geometry::Box & | childBound, |
const Octree & | parent | |
) const |
Return a child node. Needed for polymorphism.
Defined in MinSG/Ext/TriangleTrees/Octree.h:162