|
Octree data structure. More...
#include <SurgSim/DataStructures/OctreeNode.h>
Public Types | |
| typedef Eigen::AlignedBox< double, 3 > | AxisAlignedBoundingBox |
| Bounding box type for convenience. More... | |
Public Types inherited from SurgSim::Framework::Accessible | |
| typedef std::function< boost::any(void)> | GetterType |
| typedef std::function< void(boost::any)> | SetterType |
| typedef std::function< YAML::Node(void)> | EncoderType |
| typedef std::function< void(const YAML::Node *)> | DecoderType |
Public Types inherited from SurgSim::Framework::FactoryBase< Asset > | |
| typedef ObjectFactory< Asset > | FactoryType |
Public Member Functions | |
| OctreeNode () | |
| Constructor. More... | |
| OctreeNode (const OctreeNode &other) | |
| Copy constructor when the template data is the same type. More... | |
| template<class T > | |
| OctreeNode (const OctreeNode< T > &other) | |
| Copy constructor when the template data is a different type In this case, no data will be copied. More... | |
| std::string | getClassName () const override |
| Support serialization with a classname. More... | |
| OctreeNode (const SurgSim::Math::Aabbd &boundingBox) | |
| Constructor. More... | |
| virtual | ~OctreeNode () |
| Destructor. More... | |
| const SurgSim::Math::Aabbd & | getBoundingBox () const |
| Get the bounding box for this octree node. More... | |
| bool | isActive () const |
| Is this node active. More... | |
| void | setIsActive (bool isActive) |
| Set active flag for this octree node. More... | |
| bool | hasChildren () const |
| Does this node have children. More... | |
| void | subdivide () |
| Subdivide the node into 8 equal regions. More... | |
| bool | addData (const SurgSim::Math::Vector3d &position, const int level, const Data &nodeData=Data()) |
| Add data to a node in this octree The octree will build the octree as necessary to add the node at the specified level. More... | |
| std::array< std::shared_ptr< OctreeNode< Data > >, 8 > & | getChildren () |
| Get the children of this node (non const version) More... | |
| const std::array< std::shared_ptr< OctreeNode< Data > >, 8 > & | getChildren () const |
| Get the children of this node. More... | |
| std::shared_ptr< OctreeNode< Data > > | getChild (size_t index) |
| Get a child of this node (non const version) More... | |
| const std::shared_ptr< OctreeNode< Data > > | getChild (size_t index) const |
| Get a child of this node. More... | |
| virtual std::shared_ptr< OctreeNode< Data > > | getNode (const OctreePath &path, bool returnLastValid=false) |
| Get the node at the supplied path. More... | |
Public Member Functions inherited from SurgSim::Framework::Asset | |
| Asset () | |
| Constructor. More... | |
| Asset (const Asset &rhs) | |
| Copy Constructor. More... | |
| virtual | ~Asset () |
| Destructor. More... | |
| void | load (const std::string &fileName, const SurgSim::Framework::ApplicationData &data) |
| Load a file with given name using 'data' as look up path(s). More... | |
| void | load (const std::string &fileName) |
| Overloaded function using SurgSim::Framework::Runtime::getApplicationData() as look up path(s). More... | |
| std::string | getFileName () const |
| Return the name of file loaded by this class. More... | |
Public Member Functions inherited from SurgSim::Framework::Accessible | |
| Accessible () | |
| Default Constructor. More... | |
| ~Accessible () | |
| Destructor. More... | |
| template<class T > | |
| T | getValue (const std::string &name) const |
| Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More... | |
| boost::any | getValue (const std::string &name) const |
| Retrieves the value with the name by executing the getter if it is found. More... | |
| template<class T > | |
| bool | getValue (const std::string &name, T *value) const |
| Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More... | |
| void | setValue (const std::string &name, const boost::any &value) |
| Sets a value of a property that has setter. More... | |
| bool | isReadable (const std::string &name) const |
| Check whether a property is readable. More... | |
| bool | isWriteable (const std::string &name) const |
| Check whether a property is writable. More... | |
| void | setGetter (const std::string &name, GetterType func) |
| Sets a getter for a given property. More... | |
| void | setSetter (const std::string &name, SetterType func) |
| Sets a setter for a given property. More... | |
| void | setAccessors (const std::string &name, GetterType getter, SetterType setter) |
| Sets the accessors getter and setter in one function. More... | |
| void | removeAccessors (const std::string &name) |
| Removes all the accessors (getter and setter) for a given property. More... | |
| void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty) |
| Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More... | |
| void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder) |
| Sets the functions used to convert data from and to a YAML::Node. More... | |
| void | setDecoder (const std::string &name, DecoderType decoder) |
| Sets the functions used to convert data from a YAML::Node. More... | |
| YAML::Node | encode () const |
| Encode this Accessible to a YAML::Node. More... | |
| void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >()) |
| Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More... | |
| template<> | |
| boost::any | getValue (const std::string &name) const |
Public Attributes | |
| Data | data |
| Extra node data. More... | |
Protected Member Functions | |
| bool | doAddData (const SurgSim::Math::Vector3d &position, const Data &nodeData, const int level, const int currentLevel) |
| Recursive function that does the adding of the data to the octree. More... | |
| bool | doLoad (const std::string &filePath) override |
| Derived classes will overwrite this method to do actual loading. More... | |
Protected Attributes | |
| SurgSim::Math::Aabbd | m_boundingBox |
| The bounding box of the current OctreeNode. More... | |
| bool | m_isActive |
| True if there is any data inside this node, including data held by children, children's children, etc. More... | |
| bool | m_hasChildren |
| True if the node has children. More... | |
| std::array< std::shared_ptr< OctreeNode< Data > >, 8 > | m_children |
| The children of this node. More... | |
Private Member Functions | |
| template<> | |
| std::string | m_className |
Static Private Attributes | |
| static std::string | m_className |
Friends | |
| class | SurgSim::Math::OctreeShape |
| class | SurgSim::DataStructures::OctreeNodePlyReaderDelegate< Data > |
Additional Inherited Members | |
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase< Asset > | |
| static FactoryType & | getFactory () |
Octree data structure.
The octree node consists of an axis aligned bounding box, that can be subdivided into 8 equally sized subregions. Each subregion is an octree node and can be further subdivided. with x-right and y-up on a right handed coordinate system this is the ordering of the nodes of the tree, looking down the z-axis Back Face 2 3 0 1 Front Face 6 7 4 5
| Data | Type of extra data stored in each node |
| typedef Eigen::AlignedBox<double, 3> SurgSim::DataStructures::OctreeNode< Data >::AxisAlignedBoundingBox |
Bounding box type for convenience.
| SurgSim::DataStructures::OctreeNode< Data >::OctreeNode | ( | ) |
Constructor.
| SurgSim::DataStructures::OctreeNode< Data >::OctreeNode | ( | const OctreeNode< Data > & | other | ) |
Copy constructor when the template data is the same type.
| other | the octree to copy from |
| SurgSim::DataStructures::OctreeNode< Data >::OctreeNode | ( | const OctreeNode< T > & | other | ) |
Copy constructor when the template data is a different type In this case, no data will be copied.
| T | type of data stored in the other node |
| other | the octree to copy from |
|
explicit |
Constructor.
| boundingBox | The region contained by this octree node |
|
virtual |
Destructor.
| bool SurgSim::DataStructures::OctreeNode< Data >::addData | ( | const SurgSim::Math::Vector3d & | position, |
| const int | level, | ||
| const Data & | nodeData = Data() |
||
| ) |
Add data to a node in this octree The octree will build the octree as necessary to add the node at the specified level.
| position | The position to add the data at |
| nodeData | The data to store in the node |
| level | The number of levels down the octree to store the data |
|
protected |
Recursive function that does the adding of the data to the octree.
| position | The position to add the data at |
| nodeData | The data to store in the node |
| level | The number of levels down the octree to store the data |
| currentLevel | Used to keep track of the current level during recursive calls |
|
overrideprotectedvirtual |
Derived classes will overwrite this method to do actual loading.
| filePath | Absolute path to the file. |
Implements SurgSim::Framework::Asset.
| const SurgSim::Math::Aabbd & SurgSim::DataStructures::OctreeNode< Data >::getBoundingBox | ( | ) | const |
Get the bounding box for this octree node.
| std::shared_ptr< OctreeNode< Data > > SurgSim::DataStructures::OctreeNode< Data >::getChild | ( | size_t | index | ) |
Get a child of this node (non const version)
| SurgSim::Framework::AssertionFailure | if the index >= 8 |
| index | the child index |
| const std::shared_ptr< OctreeNode< Data > > SurgSim::DataStructures::OctreeNode< Data >::getChild | ( | size_t | index | ) | const |
Get a child of this node.
| SurgSim::Framework::AssertionFailure | if the index >= 8 |
| index | the child index |
| std::array< std::shared_ptr< OctreeNode< Data > >, 8 > & SurgSim::DataStructures::OctreeNode< Data >::getChildren | ( | ) |
Get the children of this node (non const version)
| const std::array< std::shared_ptr< OctreeNode< Data > >, 8 > & SurgSim::DataStructures::OctreeNode< Data >::getChildren | ( | ) | const |
Get the children of this node.
|
overridevirtual |
Support serialization with a classname.
Implements SurgSim::Framework::Asset.
|
virtual |
Get the node at the supplied path.
| SurgSim::Framework::AssertionFailure | if returnLastValid is false and the node does not exist. |
| path | the path to the specific node |
| returnLastValid | if true and the path is longer than the tree deep, the function will return |
| bool SurgSim::DataStructures::OctreeNode< Data >::hasChildren | ( | ) | const |
Does this node have children.
| bool SurgSim::DataStructures::OctreeNode< Data >::isActive | ( | ) | const |
Is this node active.
|
private |
| void SurgSim::DataStructures::OctreeNode< Data >::setIsActive | ( | bool | isActive | ) |
Set active flag for this octree node.
| isActive | True if the octree node is being activated, False otherwise |
| void SurgSim::DataStructures::OctreeNode< Data >::subdivide | ( | ) |
Subdivide the node into 8 equal regions.
Each subregion will be stored as this nodes children.
|
friend |
|
friend |
| Data SurgSim::DataStructures::OctreeNode< Data >::data |
Extra node data.
|
protected |
The bounding box of the current OctreeNode.
|
protected |
The children of this node.
|
staticprivate |
|
protected |
True if the node has children.
|
protected |
True if there is any data inside this node, including data held by children, children's children, etc.
1.8.13