| 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
trueif the node is a leaf andfalseif 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
trueif 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
trueif 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