Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
hpp::fcl::BVSplitter< BV > Class Template Reference

A class describing the split rule that splits each BV node. More...

#include <BVH_model.h>

Inheritance diagram for hpp::fcl::BVSplitter< BV >:
Inheritance graph
[legend]

Public Member Functions

bool apply (const Vec3f &q) const
 Apply the split rule on a given point. More...
 
template<>
bool HPP_FCL_DLLAPI apply (const Vec3f &q) const
 
template<>
bool HPP_FCL_DLLAPI apply (const Vec3f &q) const
 
template<>
bool HPP_FCL_DLLAPI apply (const Vec3f &q) const
 
template<>
bool HPP_FCL_DLLAPI apply (const Vec3f &q) const
 
template<>
bool apply (const Vec3f &q) const
 
template<>
bool apply (const Vec3f &q) const
 
template<>
bool apply (const Vec3f &q) const
 
template<>
bool apply (const Vec3f &q) const
 
 BVSplitter (SplitMethodType method)
 
void clear ()
 Clear the geometry data set before. More...
 
void computeRule (const BV &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 Compute the split rule according to a subset of geometry and the corresponding BV node. More...
 
void set (Vec3f *vertices_, Triangle *tri_indices_, BVHModelType type_)
 Set the geometry data needed by the split rule. More...
 
virtual ~BVSplitter ()
 Default deconstructor. More...
 

Protected Member Functions

void computeRule_bvcenter (const BV &bv, unsigned int *, unsigned int)
 Split algorithm 1: Split the node from center. More...
 
template<>
void computeRule_bvcenter (const OBB &bv, unsigned int *, unsigned int)
 
template<>
void computeRule_bvcenter (const RSS &bv, unsigned int *, unsigned int)
 
template<>
void computeRule_bvcenter (const kIOS &bv, unsigned int *, unsigned int)
 
template<>
void HPP_FCL_DLLAPI computeRule_bvcenter (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void computeRule_bvcenter (const OBBRSS &bv, unsigned int *, unsigned int)
 
template<>
void HPP_FCL_DLLAPI computeRule_bvcenter (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_bvcenter (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_bvcenter (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_mean (const BV &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 Split algorithm 2: Split the node according to the mean of the data contained. More...
 
template<>
void computeRule_mean (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void computeRule_mean (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void computeRule_mean (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_mean (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void computeRule_mean (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_mean (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_mean (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_mean (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void computeRule_median (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_median (const BV &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 Split algorithm 3: Split the node according to the median of the data contained. More...
 
template<>
void computeRule_median (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void computeRule_median (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_median (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_median (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void computeRule_median (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_median (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
template<>
void HPP_FCL_DLLAPI computeRule_median (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 

Protected Attributes

int split_axis
 The axis based on which the split decision is made. For most BV, the axis is aligned with one of the world coordinate, so only split_axis is needed. For oriented node, we can use a vector to make a better split decision. More...
 
SplitMethodType split_method
 The split algorithm used. More...
 
FCL_REAL split_value
 The split threshold, different primitives are splitted according whether their projection on the split_axis is larger or smaller than the threshold. More...
 
Vec3f split_vector
 
Triangletri_indices
 The triangles handled by the splitter. More...
 
BVHModelType type
 Whether the geometry is mesh or point cloud. More...
 
Vec3fvertices
 The mesh vertices or points handled by the splitter. More...
 

Detailed Description

template<typename BV>
class hpp::fcl::BVSplitter< BV >

A class describing the split rule that splits each BV node.

Definition at line 59 of file BVH/BVH_model.h.

Constructor & Destructor Documentation

◆ BVSplitter()

template<typename BV>
hpp::fcl::BVSplitter< BV >::BVSplitter ( SplitMethodType  method)
inline

Definition at line 61 of file internal/BV_splitter.h.

◆ ~BVSplitter()

template<typename BV>
virtual hpp::fcl::BVSplitter< BV >::~BVSplitter ( )
inlinevirtual

Default deconstructor.

Definition at line 65 of file internal/BV_splitter.h.

Member Function Documentation

◆ apply() [1/9]

template<typename BV>
bool hpp::fcl::BVSplitter< BV >::apply ( const Vec3f q) const
inline

Apply the split rule on a given point.

Definition at line 94 of file internal/BV_splitter.h.

◆ apply() [2/9]

template<>
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBB >::apply ( const Vec3f q) const

◆ apply() [3/9]

template<>
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< RSS >::apply ( const Vec3f q) const

◆ apply() [4/9]

template<>
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< kIOS >::apply ( const Vec3f q) const

◆ apply() [5/9]

template<>
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBBRSS >::apply ( const Vec3f q) const

◆ apply() [6/9]

template<>
bool hpp::fcl::BVSplitter< OBB >::apply ( const Vec3f q) const

Definition at line 262 of file BV_splitter.cpp.

◆ apply() [7/9]

template<>
bool hpp::fcl::BVSplitter< RSS >::apply ( const Vec3f q) const

Definition at line 267 of file BV_splitter.cpp.

◆ apply() [8/9]

template<>
bool hpp::fcl::BVSplitter< kIOS >::apply ( const Vec3f q) const

Definition at line 272 of file BV_splitter.cpp.

◆ apply() [9/9]

template<>
bool hpp::fcl::BVSplitter< OBBRSS >::apply ( const Vec3f q) const

Definition at line 277 of file BV_splitter.cpp.

◆ clear()

template<typename BV>
void hpp::fcl::BVSplitter< BV >::clear ( )
inline

Clear the geometry data set before.

Definition at line 97 of file internal/BV_splitter.h.

◆ computeRule()

template<typename BV>
void hpp::fcl::BVSplitter< BV >::computeRule ( const BV &  bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
inline

Compute the split rule according to a subset of geometry and the corresponding BV node.

Definition at line 76 of file internal/BV_splitter.h.

◆ computeRule_bvcenter() [1/9]

template<typename BV>
void hpp::fcl::BVSplitter< BV >::computeRule_bvcenter ( const BV &  bv,
unsigned int *  ,
unsigned  int 
)
inlineprotected

Split algorithm 1: Split the node from center.

Definition at line 129 of file internal/BV_splitter.h.

◆ computeRule_bvcenter() [2/9]

template<>
void hpp::fcl::BVSplitter< OBB >::computeRule_bvcenter ( const OBB bv,
unsigned int *  ,
unsigned  int 
)
protected

Definition at line 157 of file BV_splitter.cpp.

◆ computeRule_bvcenter() [3/9]

template<>
void hpp::fcl::BVSplitter< RSS >::computeRule_bvcenter ( const RSS bv,
unsigned int *  ,
unsigned  int 
)
protected

Definition at line 183 of file BV_splitter.cpp.

◆ computeRule_bvcenter() [4/9]

template<>
void hpp::fcl::BVSplitter< kIOS >::computeRule_bvcenter ( const kIOS bv,
unsigned int *  ,
unsigned  int 
)
protected

Definition at line 209 of file BV_splitter.cpp.

◆ computeRule_bvcenter() [5/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBB >::computeRule_bvcenter ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_bvcenter() [6/9]

template<>
void hpp::fcl::BVSplitter< OBBRSS >::computeRule_bvcenter ( const OBBRSS bv,
unsigned int *  ,
unsigned  int 
)
protected

Definition at line 235 of file BV_splitter.cpp.

◆ computeRule_bvcenter() [7/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< RSS >::computeRule_bvcenter ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_bvcenter() [8/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< kIOS >::computeRule_bvcenter ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_bvcenter() [9/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBBRSS >::computeRule_bvcenter ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [1/9]

template<typename BV>
void hpp::fcl::BVSplitter< BV >::computeRule_mean ( const BV &  bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
inlineprotected

Split algorithm 2: Split the node according to the mean of the data contained.

Definition at line 144 of file internal/BV_splitter.h.

◆ computeRule_mean() [2/9]

template<>
void hpp::fcl::BVSplitter< OBB >::computeRule_mean ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 164 of file BV_splitter.cpp.

◆ computeRule_mean() [3/9]

template<>
void hpp::fcl::BVSplitter< RSS >::computeRule_mean ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 190 of file BV_splitter.cpp.

◆ computeRule_mean() [4/9]

template<>
void hpp::fcl::BVSplitter< kIOS >::computeRule_mean ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 216 of file BV_splitter.cpp.

◆ computeRule_mean() [5/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBB >::computeRule_mean ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [6/9]

template<>
void hpp::fcl::BVSplitter< OBBRSS >::computeRule_mean ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 242 of file BV_splitter.cpp.

◆ computeRule_mean() [7/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< RSS >::computeRule_mean ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [8/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< kIOS >::computeRule_mean ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [9/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBBRSS >::computeRule_mean ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [1/9]

template<>
void hpp::fcl::BVSplitter< OBB >::computeRule_median ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 173 of file BV_splitter.cpp.

◆ computeRule_median() [2/9]

template<typename BV>
void hpp::fcl::BVSplitter< BV >::computeRule_median ( const BV &  bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
inlineprotected

Split algorithm 3: Split the node according to the median of the data contained.

Definition at line 175 of file internal/BV_splitter.h.

◆ computeRule_median() [3/9]

template<>
void hpp::fcl::BVSplitter< RSS >::computeRule_median ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 199 of file BV_splitter.cpp.

◆ computeRule_median() [4/9]

template<>
void hpp::fcl::BVSplitter< kIOS >::computeRule_median ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 225 of file BV_splitter.cpp.

◆ computeRule_median() [5/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBB >::computeRule_median ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [6/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< RSS >::computeRule_median ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [7/9]

template<>
void hpp::fcl::BVSplitter< OBBRSS >::computeRule_median ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

Definition at line 252 of file BV_splitter.cpp.

◆ computeRule_median() [8/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< kIOS >::computeRule_median ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [9/9]

template<>
void HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBBRSS >::computeRule_median ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ set()

template<typename BV>
void hpp::fcl::BVSplitter< BV >::set ( Vec3f vertices_,
Triangle tri_indices_,
BVHModelType  type_ 
)
inline

Set the geometry data needed by the split rule.

Definition at line 68 of file internal/BV_splitter.h.

Member Data Documentation

◆ split_axis

template<typename BV>
int hpp::fcl::BVSplitter< BV >::split_axis
protected

The axis based on which the split decision is made. For most BV, the axis is aligned with one of the world coordinate, so only split_axis is needed. For oriented node, we can use a vector to make a better split decision.

Definition at line 108 of file internal/BV_splitter.h.

◆ split_method

template<typename BV>
SplitMethodType hpp::fcl::BVSplitter< BV >::split_method
protected

The split algorithm used.

Definition at line 126 of file internal/BV_splitter.h.

◆ split_value

template<typename BV>
FCL_REAL hpp::fcl::BVSplitter< BV >::split_value
protected

The split threshold, different primitives are splitted according whether their projection on the split_axis is larger or smaller than the threshold.

Definition at line 114 of file internal/BV_splitter.h.

◆ split_vector

template<typename BV>
Vec3f hpp::fcl::BVSplitter< BV >::split_vector
protected

Definition at line 109 of file internal/BV_splitter.h.

◆ tri_indices

template<typename BV>
Triangle* hpp::fcl::BVSplitter< BV >::tri_indices
protected

The triangles handled by the splitter.

Definition at line 120 of file internal/BV_splitter.h.

◆ type

template<typename BV>
BVHModelType hpp::fcl::BVSplitter< BV >::type
protected

Whether the geometry is mesh or point cloud.

Definition at line 123 of file internal/BV_splitter.h.

◆ vertices

template<typename BV>
Vec3f* hpp::fcl::BVSplitter< BV >::vertices
protected

The mesh vertices or points handled by the splitter.

Definition at line 117 of file internal/BV_splitter.h.


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


hpp-fcl
Author(s):
autogenerated on Fri Jun 2 2023 02:39:03