Open CASCADE Technology  7.7.0
BVH_Traverse< NumType, Dimension, BVHSetType, MetricType > Class Template Referenceabstract

Abstract class implementing the traverse of the single binary tree. Selection of the data from the tree is performed by the rules defined in the Accept/Reject methods. See description of the required methods in the comments above. More...

#include <BVH_Traverse.hxx>

Inheritance diagram for BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >:
Inheritance graph
[legend]

Public Types

public types
typedef BVH_Box< NumType, Dimension >::BVH_VecNt BVH_VecNt
 

Public Member Functions

Constructor
 BVH_Traverse ()
 Constructor. More...
 
Setting the set to access the elements and BVH tree
void SetBVHSet (BVHSetType *theBVHSet)
 Sets the BVH Set containing the BVH tree. More...
 
Rules for Accept/Reject
virtual Standard_Boolean AcceptMetric (const MetricType &) const
 Basing on the given metric, checks if the whole branch may be accepted without any further checks. Returns true if the metric is accepted, false otherwise. More...
 
virtual Standard_Boolean RejectNode (const BVH_VecNt &theCornerMin, const BVH_VecNt &theCornerMax, MetricType &theMetric) const =0
 Rejection of the node by bounding box. Metric is computed to choose the best branch. Returns true if the node should be rejected, false otherwise. More...
 
virtual Standard_Boolean Accept (const Standard_Integer theIndex, const MetricType &theMetric)=0
 Leaf element acceptance. Metric of the parent leaf-node is passed to avoid the check on the element and accept it unconditionally. Returns true if the element has been accepted, false otherwise. More...
 
Selection
Standard_Integer Select ()
 Selection of the elements from the BVH tree by the rules defined in Accept/Reject methods. The method requires the BVHSet containing BVH tree to be set. Returns the number of accepted elements. More...
 
Standard_Integer Select (const opencascade::handle< BVH_Tree< NumType, Dimension >> &theBVH)
 Performs selection of the elements from the BVH tree by the rules defined in Accept/Reject methods. Returns the number of accepted elements. More...
 
- Public Member Functions inherited from BVH_BaseTraverse< MetricType >
virtual Standard_Boolean IsMetricBetter (const MetricType &, const MetricType &) const
 Compares the two metrics and chooses the best one. Returns true if the first metric is better than the second, false otherwise. More...
 
virtual Standard_Boolean RejectMetric (const MetricType &) const
 Rejects the node by the metric. More...
 
virtual Standard_Boolean Stop () const
 Returns the flag controlling the tree descend. Returns true if the tree descend should be stopped. More...
 

Protected Attributes

Fields
BVHSetType * myBVHSet
 

Additional Inherited Members

- Protected Member Functions inherited from BVH_BaseTraverse< MetricType >
 BVH_BaseTraverse ()
 Constructor. More...
 
virtual ~BVH_BaseTraverse ()
 Destructor. More...
 

Detailed Description

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
class BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >

Abstract class implementing the traverse of the single binary tree. Selection of the data from the tree is performed by the rules defined in the Accept/Reject methods. See description of the required methods in the comments above.

Template Parameters
NumTypeNumeric data type
DimensionVector dimension
BVHSetTypeType of set containing the BVH tree (required to access the elements by the index)
MetricTypeType of metric to perform more optimal tree descend

Member Typedef Documentation

◆ BVH_VecNt

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
typedef BVH_Box<NumType, Dimension>::BVH_VecNt BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::BVH_VecNt

Constructor & Destructor Documentation

◆ BVH_Traverse()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::BVH_Traverse ( )
inline

Constructor.

Member Function Documentation

◆ Accept()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
virtual Standard_Boolean BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::Accept ( const Standard_Integer  theIndex,
const MetricType &  theMetric 
)
pure virtual

Leaf element acceptance. Metric of the parent leaf-node is passed to avoid the check on the element and accept it unconditionally. Returns true if the element has been accepted, false otherwise.

Implemented in BRepExtrema_ProximityDistTool, and BOPTools_BoxSelector< Dimension >.

◆ AcceptMetric()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
virtual Standard_Boolean BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::AcceptMetric ( const MetricType &  ) const
inlinevirtual

Basing on the given metric, checks if the whole branch may be accepted without any further checks. Returns true if the metric is accepted, false otherwise.

Reimplemented in BOPTools_BoxSelector< Dimension >.

◆ RejectNode()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
virtual Standard_Boolean BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::RejectNode ( const BVH_VecNt theCornerMin,
const BVH_VecNt theCornerMax,
MetricType &  theMetric 
) const
pure virtual

Rejection of the node by bounding box. Metric is computed to choose the best branch. Returns true if the node should be rejected, false otherwise.

◆ Select() [1/2]

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
Standard_Integer BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::Select ( )
inline

Selection of the elements from the BVH tree by the rules defined in Accept/Reject methods. The method requires the BVHSet containing BVH tree to be set. Returns the number of accepted elements.

◆ Select() [2/2]

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
Standard_Integer BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::Select ( const opencascade::handle< BVH_Tree< NumType, Dimension >> &  theBVH)

Performs selection of the elements from the BVH tree by the rules defined in Accept/Reject methods. Returns the number of accepted elements.

◆ SetBVHSet()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
void BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::SetBVHSet ( BVHSetType *  theBVHSet)
inline

Sets the BVH Set containing the BVH tree.

Field Documentation

◆ myBVHSet

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
BVHSetType* BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >::myBVHSet
protected

The documentation for this class was generated from the following file: