Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
BVH_BaseTraverse< MetricType > Class Template Reference

The classes implement the traverse of the BVH tree. More...

#include <BVH_Traverse.hxx>

Inheritance diagram for BVH_BaseTraverse< MetricType >:
Inheritance graph
[legend]

Public Member Functions

Metrics comparison for choosing the best branch

Compares the two metrics and chooses the best one. Returns true if the first metric is better than the second, false otherwise.

virtual bool IsMetricBetter (const MetricType &, const MetricType &) const
 
Rejection of the node by metric

Rejects the node by the metric

virtual bool RejectMetric (const MetricType &) const
 
Condition to stop the descend

Returns the flag controlling the tree descend. Returns true if the tree descend should be stopped.

virtual bool Stop () const
 

Protected Member Functions

Constructors

Constructor

 BVH_BaseTraverse ()
 Destructor.
 
virtual ~BVH_BaseTraverse ()=default
 Destructor.
 

Detailed Description

template<class MetricType>
class BVH_BaseTraverse< MetricType >

The classes implement the traverse of the BVH tree.

There are two traverse methods implemented:

To perform Selection of the elements from BVH_Tree using the traverse methods implemented here it is required to define Acceptance/Rejection rules in the following methods:

The selector of a single tree has an extra method which allows accepting the whole branches without any further checks (e.g. full inclusion test):

Two ways of selection are possible:

  1. Set the BVH set containing the tree and use the method Select() which allows using common interface for setting the BVH Set for accessing the BVH tree and elements in the Accept method.
  2. Keep the BVHSetType void, do not set the BVH set and use the method Select (const BVH_Tree<>&) which allows performing selection on the arbitrary BVH tree.

Here is the example of usage of the traverse to find the point-triangulation minimal distance.

// Structure to contain points of the triangle
struct Triangle
{
Triangle() {}
Triangle(const BVH_Vec3d& theNode1,
: Node1 (theNode1), Node2 (theNode2), Node3 (theNode3)
{}
BVH_Vec3d Node1;
BVH_Vec3d Node2;
BVH_Vec3d Node3;
};
// Selector for min point-triangulation distance
public BVH_Distance<double, 3, BVH_Vec3d, BVH_BoxSet<double, 3, Triangle>>
{
public:
// Computes the distance from the point to bounding box
virtual bool RejectNode (const BVH_Vec3d& theCMin,
double& theDistance) const override
{
theCMax); return RejectMetric (theDistance);
}
// Computes the distance from the point to triangle
virtual bool Accept (const int theIndex,
const double&) override
{
const Triangle& aTri = myBVHSet->Element (theIndex);
aTri.Node1, aTri.Node2, aTri.Node3); if (aDist < myDistance)
{
myDistance = aDist;
return true;
}
return false;
}
};
// Point to which the distance is required
// BVH Set containing triangulation
aDistTool.SetObject (aPoint);
aDistTool.SetBVHSet (aTriangulationSet.get());
aDistTool.ComputeDistance();
if (aDistTool.IsDone())
{
double aPointTriSqDist = aDistTool.Distance();
}
BVH::VectorType< double, 3 >::Type BVH_Vec3d
3D vector of double precision reals.
Definition BVH_Types.hxx:144
Abstract class for computation of the min distance between some Object and elements of BVH tree....
Definition BVH_Distance.hxx:33
static T PointTriangleSquareDistance(const BVH_VecNt &thePoint, const BVH_VecNt &theNode0, const BVH_VecNt &theNode1, const BVH_VecNt &theNode2)
Computes square distance between point and triangle.
Definition BVH_Tools.hxx:271
static T PointBoxSquareDistance(const BVH_VecNt &thePoint, const BVH_Box< T, N > &theBox)
Computes square distance between point and bounding box.
Definition BVH_Tools.hxx:79
STL input iterator that wraps an OCCT More()/Next() iterator.
Definition NCollection_ForwardRange.hxx:142
Intrusive smart pointer for use with Standard_Transient class and its descendants.
Definition Standard_Handle.hxx:54

Abstract class implementing the base Traverse interface required for selection of the elements from BVH tree.

Template Parameters
MetricTypeType of metric to perform more optimal tree descend

Constructor & Destructor Documentation

◆ BVH_BaseTraverse()

Destructor.

◆ ~BVH_BaseTraverse()

template<class MetricType >
virtual BVH_BaseTraverse< MetricType >::~BVH_BaseTraverse ( )
protectedvirtualdefault

Destructor.

Member Function Documentation

◆ IsMetricBetter()

template<class MetricType >
virtual bool BVH_BaseTraverse< MetricType >::IsMetricBetter ( const MetricType & ,
const MetricType &  ) const
inlinevirtual

◆ RejectMetric()

template<class MetricType >
virtual bool BVH_BaseTraverse< MetricType >::RejectMetric ( const MetricType & ) const
inlinevirtual

◆ Stop()

template<class MetricType >
virtual bool BVH_BaseTraverse< MetricType >::Stop ( ) const
inlinevirtual

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