Open CASCADE Technology 7.8.0
Data Structures | Public Types | Public Member Functions
BRepExtrema_ProximityDistTool Class Reference

Tool class for computation the proximity distance from first primitive set to second one that is the maximal from minimum perpendicular distances. If no perpendicular distance is found, the minimum distance will be returned. This tool is not intended to be used independently, and is integrated in other classes, implementing algorithms based on shape tessellation (BRepExtrema_ProximityValueTool). More...

#include <BRepExtrema_ProximityDistTool.hxx>

Inheritance diagram for BRepExtrema_ProximityDistTool:
Inheritance graph
[legend]

Data Structures

struct  PrjState
 Struct with information about projection point state from 2nd BVH, providing proximity point of 2nd shape. More...
 

Public Types

enum  ProxPnt_Status { ProxPnt_Status_BORDER , ProxPnt_Status_MIDDLE , ProxPnt_Status_UNKNOWN }
 
typedef BVH_Tools< Standard_Real, 3 >::BVH_PrjStateInTriangle BVH_PrjState
 
- Public Types inherited from BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >
typedef BVH_Box< NumType, Dimension >::BVH_VecNt BVH_VecNt
 

Public Member Functions

 BRepExtrema_ProximityDistTool ()
 Creates new unitialized tool.
 
 BRepExtrema_ProximityDistTool (const Handle< BRepExtrema_TriangleSet > &theSet1, const Standard_Integer theNbSamples1, const BVH_Array3d &theAddVertices1, const NCollection_Vector< ProxPnt_Status > &theAddStatus1, const Handle< BRepExtrema_TriangleSet > &theSet2, const BRepExtrema_ShapeList &theShapeList1, const BRepExtrema_ShapeList &theShapeList2)
 Creates new tool for the given element sets.
 
void LoadTriangleSets (const Handle< BRepExtrema_TriangleSet > &theSet1, const Handle< BRepExtrema_TriangleSet > &theSet2)
 Loads the given element sets into the tool.
 
void LoadShapeLists (const BRepExtrema_ShapeList &theShapeList1, const BRepExtrema_ShapeList &theShapeList2)
 Loads the given list of subshapes into the tool.
 
void LoadAdditionalPointsFirstSet (const BVH_Array3d &theAddVertices1, const NCollection_Vector< ProxPnt_Status > &theAddStatus1)
 Loads given additional vertices and their statuses.
 
void Perform ()
 Performs searching of the proximity distance.
 
- Public Member Functions inherited from BVH_Distance< Standard_Real, 3, BVH_Vec3d, BRepExtrema_TriangleSet >
 BVH_Distance ()
 Constructor.
 
void SetObject (const BVH_Vec3d &theObject)
 Sets the object to which the distance is required.
 
Standard_Real ComputeDistance ()
 Computes the distance between object and BVH tree.
 
Standard_Boolean IsDone () const
 Returns IsDone flag.
 
Standard_Real Distance () const
 Returns the computed distance.
 
virtual Standard_Boolean IsMetricBetter (const Standard_Real &theLeft, const Standard_Real &theRight) const override
 Compares the two metrics and chooses the best one.
 
virtual Standard_Boolean RejectMetric (const Standard_Real &theMetric) const override
 Rejects the branch by the metric.
 
virtual Standard_Boolean Stop () const override
 Returns the flag controlling the tree descend.
 
- Public Member Functions inherited from BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >
 BVH_Traverse ()
 Constructor.
 
void SetBVHSet (BVHSetType *theBVHSet)
 Sets the BVH Set containing the BVH tree.
 
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.
 
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.
 
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.
 
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.
 
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.
 
- 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.
 
virtual Standard_Boolean RejectMetric (const MetricType &) const
 Rejects the node by the metric.
 

Reject/Accept implementations

Standard_Real myMinDistance
 Minimal distance from point to BVH, could be not equal to myDistance.
 
BVH_Vec3d myMinDistPoint
 Point on BVH providing the minimal distance.
 
BVH_Vec3d myExtremaPoint
 Point on BVH providing the extrema.
 
Standard_Real myProxDist
 Proximity distance.
 
BVH_Vec3d myPnt1
 Proximity points.
 
BVH_Vec3d myPnt2
 Minimal distance from point to BVH, could be not equal to myDistance.
 
ProxPnt_Status myPntStatus1
 Proximity points' status.
 
ProxPnt_Status myPntStatus2
 Minimal distance from point to BVH, could be not equal to myDistance.
 
virtual Standard_Boolean RejectNode (const BVH_Vec3d &theCornerMin, const BVH_Vec3d &theCornerMax, Standard_Real &theMetric) const override
 Defines the rules for node rejection by bounding box.
 
virtual Standard_Boolean Accept (const Standard_Integer theSgmIdx, const Standard_Real &) override
 Defines the rules for leaf acceptance.
 
void ProximityPoints (BVH_Vec3d &thePoint1, BVH_Vec3d &thePoint2) const
 Returns points on triangles sets, which provide the proximity distance.
 
void ProximityPointsStatus (ProxPnt_Status &thePointStatus1, ProxPnt_Status &thePointStatus2) const
 Returns status of points on triangles sets, which provide the proximity distance.
 
Standard_Real ProximityDistance () const
 Returns the computed distance.
 
static Standard_Boolean IsNodeOnBorder (const Standard_Integer theNodeIdx, const Handle< Poly_Triangulation > &theTr)
 Returns true if the node is on the boarder.
 
static Standard_Boolean IsEdgeOnBorder (const Standard_Integer theTrgIdx, const Standard_Integer theFirstEdgeNodeIdx, const Standard_Integer theSecondEdgeNodeIdx, const Handle< Poly_Triangulation > &theTr)
 Returns true if the edge is on the boarder.
 
Standard_Real ComputeDistance ()
 Computes the distance between object and BVH tree.
 
void DefineStatusProxPnt ()
 Defines the status of proximity points.
 

Additional Inherited Members

- Protected Member Functions inherited from BVH_BaseTraverse< MetricType >
 BVH_BaseTraverse ()
 Constructor.
 
virtual ~BVH_BaseTraverse ()
 Destructor.
 
- Protected Attributes inherited from BVH_Distance< Standard_Real, 3, BVH_Vec3d, BRepExtrema_TriangleSet >
Standard_Real myDistance
 Distance.
 
Standard_Boolean myIsDone
 State of the algorithm.
 
BVH_Vec3d myObject
 Object to compute the distance to.
 
- Protected Attributes inherited from BVH_Traverse< NumType, Dimension, BVHSetType, MetricType >
BVHSetTypemyBVHSet
 

Detailed Description

Tool class for computation the proximity distance from first primitive set to second one that is the maximal from minimum perpendicular distances. If no perpendicular distance is found, the minimum distance will be returned. This tool is not intended to be used independently, and is integrated in other classes, implementing algorithms based on shape tessellation (BRepExtrema_ProximityValueTool).

Please note that algorithm results are approximate and depend greatly on the quality of input tessellation(s).

Member Typedef Documentation

◆ BVH_PrjState

Member Enumeration Documentation

◆ ProxPnt_Status

Enumerator
ProxPnt_Status_BORDER 
ProxPnt_Status_MIDDLE 
ProxPnt_Status_UNKNOWN 

Constructor & Destructor Documentation

◆ BRepExtrema_ProximityDistTool() [1/2]

BRepExtrema_ProximityDistTool::BRepExtrema_ProximityDistTool ( )

Creates new unitialized tool.

◆ BRepExtrema_ProximityDistTool() [2/2]

BRepExtrema_ProximityDistTool::BRepExtrema_ProximityDistTool ( const Handle< BRepExtrema_TriangleSet > &  theSet1,
const Standard_Integer  theNbSamples1,
const BVH_Array3d theAddVertices1,
const NCollection_Vector< ProxPnt_Status > &  theAddStatus1,
const Handle< BRepExtrema_TriangleSet > &  theSet2,
const BRepExtrema_ShapeList theShapeList1,
const BRepExtrema_ShapeList theShapeList2 
)

Creates new tool for the given element sets.

Member Function Documentation

◆ Accept()

virtual Standard_Boolean BRepExtrema_ProximityDistTool::Accept ( const Standard_Integer  theSgmIdx,
const Standard_Real  
)
overridevirtual

Defines the rules for leaf acceptance.

◆ ComputeDistance()

Standard_Real BRepExtrema_ProximityDistTool::ComputeDistance ( )
protected

Computes the distance between object and BVH tree.

◆ DefineStatusProxPnt()

void BRepExtrema_ProximityDistTool::DefineStatusProxPnt ( )
protected

Defines the status of proximity points.

◆ IsEdgeOnBorder()

static Standard_Boolean BRepExtrema_ProximityDistTool::IsEdgeOnBorder ( const Standard_Integer  theTrgIdx,
const Standard_Integer  theFirstEdgeNodeIdx,
const Standard_Integer  theSecondEdgeNodeIdx,
const Handle< Poly_Triangulation > &  theTr 
)
static

Returns true if the edge is on the boarder.

◆ IsNodeOnBorder()

static Standard_Boolean BRepExtrema_ProximityDistTool::IsNodeOnBorder ( const Standard_Integer  theNodeIdx,
const Handle< Poly_Triangulation > &  theTr 
)
static

Returns true if the node is on the boarder.

◆ LoadAdditionalPointsFirstSet()

void BRepExtrema_ProximityDistTool::LoadAdditionalPointsFirstSet ( const BVH_Array3d theAddVertices1,
const NCollection_Vector< ProxPnt_Status > &  theAddStatus1 
)

Loads given additional vertices and their statuses.

◆ LoadShapeLists()

void BRepExtrema_ProximityDistTool::LoadShapeLists ( const BRepExtrema_ShapeList theShapeList1,
const BRepExtrema_ShapeList theShapeList2 
)

Loads the given list of subshapes into the tool.

◆ LoadTriangleSets()

void BRepExtrema_ProximityDistTool::LoadTriangleSets ( const Handle< BRepExtrema_TriangleSet > &  theSet1,
const Handle< BRepExtrema_TriangleSet > &  theSet2 
)

Loads the given element sets into the tool.

◆ Perform()

void BRepExtrema_ProximityDistTool::Perform ( )

Performs searching of the proximity distance.

◆ ProximityDistance()

Standard_Real BRepExtrema_ProximityDistTool::ProximityDistance ( ) const
inline

Returns the computed distance.

◆ ProximityPoints()

void BRepExtrema_ProximityDistTool::ProximityPoints ( BVH_Vec3d thePoint1,
BVH_Vec3d thePoint2 
) const
inline

Returns points on triangles sets, which provide the proximity distance.

◆ ProximityPointsStatus()

void BRepExtrema_ProximityDistTool::ProximityPointsStatus ( ProxPnt_Status thePointStatus1,
ProxPnt_Status thePointStatus2 
) const
inline

Returns status of points on triangles sets, which provide the proximity distance.

◆ RejectNode()

virtual Standard_Boolean BRepExtrema_ProximityDistTool::RejectNode ( const BVH_Vec3d theCornerMin,
const BVH_Vec3d theCornerMax,
Standard_Real theMetric 
) const
overridevirtual

Defines the rules for node rejection by bounding box.

Field Documentation

◆ myExtremaPoint

BVH_Vec3d BRepExtrema_ProximityDistTool::myExtremaPoint
protected

Point on BVH providing the extrema.

◆ myMinDistance

Standard_Real BRepExtrema_ProximityDistTool::myMinDistance
protected

Minimal distance from point to BVH, could be not equal to myDistance.

◆ myMinDistPoint

BVH_Vec3d BRepExtrema_ProximityDistTool::myMinDistPoint
protected

Point on BVH providing the minimal distance.

◆ myPnt1

BVH_Vec3d BRepExtrema_ProximityDistTool::myPnt1
protected

Proximity points.

◆ myPnt2

BVH_Vec3d BRepExtrema_ProximityDistTool::myPnt2
protected

Minimal distance from point to BVH, could be not equal to myDistance.

◆ myPntStatus1

ProxPnt_Status BRepExtrema_ProximityDistTool::myPntStatus1
protected

Proximity points' status.

◆ myPntStatus2

ProxPnt_Status BRepExtrema_ProximityDistTool::myPntStatus2
protected

Minimal distance from point to BVH, could be not equal to myDistance.

◆ myProxDist

Standard_Real BRepExtrema_ProximityDistTool::myProxDist
protected

Proximity distance.


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