Open CASCADE Technology  7.4.1.dev
BVH_PairTraverse< NumType, Dimension, BVHSetType, MetricType > Class Template Referenceabstract

Abstract class implementing the parallel traverse of two binary trees. Selection of the data from the trees 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_PairTraverse< 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_PairTraverse ()
 Constructor. More...
 
Setting the sets to access the elements and BVH trees
void SetBVHSets (BVHSetType *theBVHSet1, BVHSetType *theBVHSet2)
 Sets the BVH Sets containing the BVH trees. More...
 
Rules for Accept/Reject
virtual Standard_Boolean RejectNode (const BVH_VecNt &theCornerMin1, const BVH_VecNt &theCornerMax1, const BVH_VecNt &theCornerMin2, const BVH_VecNt &theCornerMax2, MetricType &theMetric) const =0
 Rejection of the pair of nodes by bounding boxes. Metric is computed to choose the best branch. Returns true if the pair of nodes should be rejected, false otherwise. More...
 
virtual Standard_Boolean Accept (const Standard_Integer theIndex1, const Standard_Integer theIndex2)=0
 Leaf element acceptance. Returns true if the pair of elements is accepted, false otherwise. More...
 
Selection
Standard_Integer Select ()
 Selection of the pairs of elements of two BVH trees by the rules defined in Accept/Reject methods. The method requires the BVHSets containing BVH trees to be set. Returns the number of accepted pairs of elements. More...
 
Standard_Integer Select (const opencascade::handle< BVH_Tree< NumType, Dimension >> &theBVH1, const opencascade::handle< BVH_Tree< NumType, Dimension >> &theBVH2)
 Performs selection of the elements from two BVH trees by the rules defined in Accept/Reject methods. Returns the number of accepted pairs of 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 * myBVHSet1
 
BVHSetType * myBVHSet2
 

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_PairTraverse< NumType, Dimension, BVHSetType, MetricType >

Abstract class implementing the parallel traverse of two binary trees. Selection of the data from the trees 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_PairTraverse< NumType, Dimension, BVHSetType, MetricType >::BVH_VecNt

Constructor & Destructor Documentation

◆ BVH_PairTraverse()

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

Constructor.

Member Function Documentation

◆ Accept()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
virtual Standard_Boolean BVH_PairTraverse< NumType, Dimension, BVHSetType, MetricType >::Accept ( const Standard_Integer  theIndex1,
const Standard_Integer  theIndex2 
)
pure virtual

Leaf element acceptance. Returns true if the pair of elements is accepted, false otherwise.

Implemented in BOPTools_PairSelector< Dimension >, and BRepExtrema_OverlapTool.

◆ RejectNode()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
virtual Standard_Boolean BVH_PairTraverse< NumType, Dimension, BVHSetType, MetricType >::RejectNode ( const BVH_VecNt theCornerMin1,
const BVH_VecNt theCornerMax1,
const BVH_VecNt theCornerMin2,
const BVH_VecNt theCornerMax2,
MetricType &  theMetric 
) const
pure virtual

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

Implemented in BVH_PairDistance< NumType, Dimension, BVHSetType >.

◆ Select() [1/2]

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

Selection of the pairs of elements of two BVH trees by the rules defined in Accept/Reject methods. The method requires the BVHSets containing BVH trees to be set. Returns the number of accepted pairs of elements.

◆ Select() [2/2]

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

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

◆ SetBVHSets()

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
void BVH_PairTraverse< NumType, Dimension, BVHSetType, MetricType >::SetBVHSets ( BVHSetType *  theBVHSet1,
BVHSetType *  theBVHSet2 
)
inline

Sets the BVH Sets containing the BVH trees.

Field Documentation

◆ myBVHSet1

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
BVHSetType* BVH_PairTraverse< NumType, Dimension, BVHSetType, MetricType >::myBVHSet1
protected

◆ myBVHSet2

template<class NumType, int Dimension, class BVHSetType = void, class MetricType = NumType>
BVHSetType* BVH_PairTraverse< NumType, Dimension, BVHSetType, MetricType >::myBVHSet2
protected

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