Open CASCADE Technology 7.8.2.dev
BVH_Tools< T, N > Class Template Reference

Defines a set of static methods operating with points and bounding boxes. More...

#include <BVH_Tools.hxx>

Public Types

public types
enum  BVH_PrjStateInTriangle { BVH_PrjStateInTriangle_VERTEX , BVH_PrjStateInTriangle_EDGE , BVH_PrjStateInTriangle_INNER }
 
typedef BVH::VectorType< T, N >::Type BVH_VecNt
 

Static Public Member Functions

Box-Box Square distance
static T BoxBoxSquareDistance (const BVH_Box< T, N > &theBox1, const BVH_Box< T, N > &theBox2)
 Computes Square distance between Axis aligned bounding boxes.
 
static T BoxBoxSquareDistance (const BVH_VecNt &theCMin1, const BVH_VecNt &theCMax1, const BVH_VecNt &theCMin2, const BVH_VecNt &theCMax2)
 Computes Square distance between Axis aligned bounding boxes.
 
Point-Box Square distance
static T PointBoxSquareDistance (const BVH_VecNt &thePoint, const BVH_Box< T, N > &theBox)
 Computes square distance between point and bounding box.
 
static T PointBoxSquareDistance (const BVH_VecNt &thePoint, const BVH_VecNt &theCMin, const BVH_VecNt &theCMax)
 Computes square distance between point and bounding box.
 
Point-Box projection
static BVH_VecNt PointBoxProjection (const BVH_VecNt &thePoint, const BVH_Box< T, N > &theBox)
 Computes projection of point on bounding box.
 
static BVH_VecNt PointBoxProjection (const BVH_VecNt &thePoint, const BVH_VecNt &theCMin, const BVH_VecNt &theCMax)
 Computes projection of point on bounding box.
 
Point-Triangle Square distance
static BVH_VecNt PointTriangleProjection (const BVH_VecNt &thePoint, const BVH_VecNt &theNode0, const BVH_VecNt &theNode1, const BVH_VecNt &theNode2, BVH_PrjStateInTriangle *thePrjState=nullptr, Standard_Integer *theNumberOfFirstNode=nullptr, Standard_Integer *theNumberOfLastNode=nullptr)
 Find nearest point on a triangle for the given point.
 
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.
 
Ray-Box Intersection
static Standard_Boolean RayBoxIntersection (const BVH_Ray< T, N > &theRay, const BVH_Box< T, N > &theBox, T &theTimeEnter, T &theTimeLeave)
 Computes hit time of ray-box intersection.
 
static Standard_Boolean RayBoxIntersection (const BVH_Ray< T, N > &theRay, const BVH_VecNt &theBoxCMin, const BVH_VecNt &theBoxCMax, T &theTimeEnter, T &theTimeLeave)
 Computes hit time of ray-box intersection.
 
static Standard_Boolean RayBoxIntersection (const BVH_VecNt &theRayOrigin, const BVH_VecNt &theRayDirection, const BVH_Box< T, N > &theBox, T &theTimeEnter, T &theTimeLeave)
 Computes hit time of ray-box intersection.
 
static Standard_Boolean RayBoxIntersection (const BVH_VecNt &theRayOrigin, const BVH_VecNt &theRayDirection, const BVH_VecNt &theBoxCMin, const BVH_VecNt &theBoxCMax, T &theTimeEnter, T &theTimeLeave)
 Computes hit time of ray-box intersection.
 

Detailed Description

template<class T, int N>
class BVH_Tools< T, N >

Defines a set of static methods operating with points and bounding boxes.

Template Parameters
TNumeric data type
NVector dimension

Member Typedef Documentation

◆ BVH_VecNt

template<class T , int N>
BVH::VectorType<T,N>::Type BVH_Tools< T, N >::BVH_VecNt

Member Enumeration Documentation

◆ BVH_PrjStateInTriangle

template<class T , int N>
enum BVH_Tools::BVH_PrjStateInTriangle
Enumerator
BVH_PrjStateInTriangle_VERTEX 
BVH_PrjStateInTriangle_EDGE 
BVH_PrjStateInTriangle_INNER 

Member Function Documentation

◆ BoxBoxSquareDistance() [1/2]

template<class T , int N>
static T BVH_Tools< T, N >::BoxBoxSquareDistance ( const BVH_Box< T, N > & theBox1,
const BVH_Box< T, N > & theBox2 )
inlinestatic

Computes Square distance between Axis aligned bounding boxes.

◆ BoxBoxSquareDistance() [2/2]

template<class T , int N>
static T BVH_Tools< T, N >::BoxBoxSquareDistance ( const BVH_VecNt & theCMin1,
const BVH_VecNt & theCMax1,
const BVH_VecNt & theCMin2,
const BVH_VecNt & theCMax2 )
inlinestatic

Computes Square distance between Axis aligned bounding boxes.

◆ PointBoxProjection() [1/2]

template<class T , int N>
static BVH_VecNt BVH_Tools< T, N >::PointBoxProjection ( const BVH_VecNt & thePoint,
const BVH_Box< T, N > & theBox )
inlinestatic

Computes projection of point on bounding box.

◆ PointBoxProjection() [2/2]

template<class T , int N>
static BVH_VecNt BVH_Tools< T, N >::PointBoxProjection ( const BVH_VecNt & thePoint,
const BVH_VecNt & theCMin,
const BVH_VecNt & theCMax )
inlinestatic

Computes projection of point on bounding box.

◆ PointBoxSquareDistance() [1/2]

template<class T , int N>
static T BVH_Tools< T, N >::PointBoxSquareDistance ( const BVH_VecNt & thePoint,
const BVH_Box< T, N > & theBox )
inlinestatic

Computes square distance between point and bounding box.

◆ PointBoxSquareDistance() [2/2]

template<class T , int N>
static T BVH_Tools< T, N >::PointBoxSquareDistance ( const BVH_VecNt & thePoint,
const BVH_VecNt & theCMin,
const BVH_VecNt & theCMax )
inlinestatic

Computes square distance between point and bounding box.

◆ PointTriangleProjection()

template<class T , int N>
static BVH_VecNt BVH_Tools< T, N >::PointTriangleProjection ( const BVH_VecNt & thePoint,
const BVH_VecNt & theNode0,
const BVH_VecNt & theNode1,
const BVH_VecNt & theNode2,
BVH_PrjStateInTriangle * thePrjState = nullptr,
Standard_Integer * theNumberOfFirstNode = nullptr,
Standard_Integer * theNumberOfLastNode = nullptr )
inlinestatic

Find nearest point on a triangle for the given point.

◆ PointTriangleSquareDistance()

template<class T , int N>
static T BVH_Tools< T, N >::PointTriangleSquareDistance ( const BVH_VecNt & thePoint,
const BVH_VecNt & theNode0,
const BVH_VecNt & theNode1,
const BVH_VecNt & theNode2 )
inlinestatic

Computes square distance between point and triangle.

◆ RayBoxIntersection() [1/4]

template<class T , int N>
static Standard_Boolean BVH_Tools< T, N >::RayBoxIntersection ( const BVH_Ray< T, N > & theRay,
const BVH_Box< T, N > & theBox,
T & theTimeEnter,
T & theTimeLeave )
inlinestatic

Computes hit time of ray-box intersection.

◆ RayBoxIntersection() [2/4]

template<class T , int N>
static Standard_Boolean BVH_Tools< T, N >::RayBoxIntersection ( const BVH_Ray< T, N > & theRay,
const BVH_VecNt & theBoxCMin,
const BVH_VecNt & theBoxCMax,
T & theTimeEnter,
T & theTimeLeave )
inlinestatic

Computes hit time of ray-box intersection.

◆ RayBoxIntersection() [3/4]

template<class T , int N>
static Standard_Boolean BVH_Tools< T, N >::RayBoxIntersection ( const BVH_VecNt & theRayOrigin,
const BVH_VecNt & theRayDirection,
const BVH_Box< T, N > & theBox,
T & theTimeEnter,
T & theTimeLeave )
inlinestatic

Computes hit time of ray-box intersection.

◆ RayBoxIntersection() [4/4]

template<class T , int N>
static Standard_Boolean BVH_Tools< T, N >::RayBoxIntersection ( const BVH_VecNt & theRayOrigin,
const BVH_VecNt & theRayDirection,
const BVH_VecNt & theBoxCMin,
const BVH_VecNt & theBoxCMax,
T & theTimeEnter,
T & theTimeLeave )
inlinestatic

Computes hit time of ray-box intersection.


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