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

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

#include <BVH_model.h>

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

Public Member Functions

bool apply (const Vec3s &q) const
 Apply the split rule on a given point. More...
 
bool COAL_DLLAPI apply (const Vec3s &q) const
 
bool COAL_DLLAPI apply (const Vec3s &q) const
 
bool COAL_DLLAPI apply (const Vec3s &q) const
 
bool COAL_DLLAPI apply (const Vec3s &q) const
 
bool apply (const Vec3s &q) const
 
bool apply (const Vec3s &q) const
 
bool apply (const Vec3s &q) const
 
bool apply (const Vec3s &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 (Vec3s *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...
 
void computeRule_bvcenter (const kIOS &bv, unsigned int *, unsigned int)
 
void COAL_DLLAPI computeRule_bvcenter (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_bvcenter (const OBB &bv, unsigned int *, unsigned int)
 
void COAL_DLLAPI computeRule_bvcenter (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_bvcenter (const OBBRSS &bv, unsigned int *, unsigned int)
 
void COAL_DLLAPI computeRule_bvcenter (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_bvcenter (const RSS &bv, unsigned int *, unsigned int)
 
void COAL_DLLAPI computeRule_bvcenter (const RSS &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...
 
void computeRule_mean (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_mean (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_mean (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_mean (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_mean (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_mean (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_mean (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_mean (const RSS &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...
 
void computeRule_median (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_median (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_median (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_median (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_median (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_median (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void computeRule_median (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives)
 
void COAL_DLLAPI computeRule_median (const RSS &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...
 
CoalScalar 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...
 
Vec3s split_vector
 
Triangletri_indices
 The triangles handled by the splitter. More...
 
BVHModelType type
 Whether the geometry is mesh or point cloud. More...
 
Vec3svertices
 The mesh vertices or points handled by the splitter. More...
 

Detailed Description

template<typename BV>
class coal::BVSplitter< BV >

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

Definition at line 61 of file coal/BVH/BVH_model.h.

Constructor & Destructor Documentation

◆ BVSplitter()

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

Definition at line 60 of file coal/internal/BV_splitter.h.

◆ ~BVSplitter()

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

Default deconstructor.

Definition at line 64 of file coal/internal/BV_splitter.h.

Member Function Documentation

◆ apply() [1/9]

template<typename BV >
bool coal::BVSplitter< BV >::apply ( const Vec3s q) const
inline

Apply the split rule on a given point.

Definition at line 93 of file coal/internal/BV_splitter.h.

◆ apply() [2/9]

bool COAL_DLLAPI coal::BVSplitter< OBB >::apply ( const Vec3s q) const

◆ apply() [3/9]

bool COAL_DLLAPI coal::BVSplitter< RSS >::apply ( const Vec3s q) const

◆ apply() [4/9]

bool COAL_DLLAPI coal::BVSplitter< kIOS >::apply ( const Vec3s q) const

◆ apply() [5/9]

bool COAL_DLLAPI coal::BVSplitter< OBBRSS >::apply ( const Vec3s q) const

◆ apply() [6/9]

bool coal::BVSplitter< OBB >::apply ( const Vec3s q) const

Definition at line 262 of file BV_splitter.cpp.

◆ apply() [7/9]

bool coal::BVSplitter< RSS >::apply ( const Vec3s q) const

Definition at line 267 of file BV_splitter.cpp.

◆ apply() [8/9]

bool coal::BVSplitter< kIOS >::apply ( const Vec3s q) const

Definition at line 272 of file BV_splitter.cpp.

◆ apply() [9/9]

bool coal::BVSplitter< OBBRSS >::apply ( const Vec3s q) const

Definition at line 277 of file BV_splitter.cpp.

◆ clear()

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

Clear the geometry data set before.

Definition at line 96 of file coal/internal/BV_splitter.h.

◆ computeRule()

template<typename BV >
void coal::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 75 of file coal/internal/BV_splitter.h.

◆ computeRule_bvcenter() [1/9]

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

Split algorithm 1: Split the node from center.

Definition at line 128 of file coal/internal/BV_splitter.h.

◆ computeRule_bvcenter() [2/9]

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

Definition at line 209 of file BV_splitter.cpp.

◆ computeRule_bvcenter() [3/9]

void COAL_DLLAPI coal::BVSplitter< kIOS >::computeRule_bvcenter ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_bvcenter() [4/9]

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

Definition at line 157 of file BV_splitter.cpp.

◆ computeRule_bvcenter() [5/9]

void COAL_DLLAPI coal::BVSplitter< OBB >::computeRule_bvcenter ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_bvcenter() [6/9]

void coal::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]

void COAL_DLLAPI coal::BVSplitter< OBBRSS >::computeRule_bvcenter ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_bvcenter() [8/9]

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

Definition at line 183 of file BV_splitter.cpp.

◆ computeRule_bvcenter() [9/9]

void COAL_DLLAPI coal::BVSplitter< RSS >::computeRule_bvcenter ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [1/9]

template<typename BV >
void coal::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 143 of file coal/internal/BV_splitter.h.

◆ computeRule_mean() [2/9]

void coal::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() [3/9]

void COAL_DLLAPI coal::BVSplitter< kIOS >::computeRule_mean ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [4/9]

void coal::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() [5/9]

void COAL_DLLAPI coal::BVSplitter< OBB >::computeRule_mean ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [6/9]

void coal::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]

void COAL_DLLAPI coal::BVSplitter< OBBRSS >::computeRule_mean ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_mean() [8/9]

void coal::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() [9/9]

void COAL_DLLAPI coal::BVSplitter< RSS >::computeRule_mean ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [1/9]

template<typename BV >
void coal::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 174 of file coal/internal/BV_splitter.h.

◆ computeRule_median() [2/9]

void coal::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() [3/9]

void COAL_DLLAPI coal::BVSplitter< kIOS >::computeRule_median ( const kIOS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [4/9]

void coal::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() [5/9]

void COAL_DLLAPI coal::BVSplitter< OBB >::computeRule_median ( const OBB bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [6/9]

void coal::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() [7/9]

void COAL_DLLAPI coal::BVSplitter< OBBRSS >::computeRule_median ( const OBBRSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ computeRule_median() [8/9]

void coal::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() [9/9]

void COAL_DLLAPI coal::BVSplitter< RSS >::computeRule_median ( const RSS bv,
unsigned int *  primitive_indices,
unsigned int  num_primitives 
)
protected

◆ set()

template<typename BV >
void coal::BVSplitter< BV >::set ( Vec3s vertices_,
Triangle tri_indices_,
BVHModelType  type_ 
)
inline

Set the geometry data needed by the split rule.

Definition at line 67 of file coal/internal/BV_splitter.h.

Member Data Documentation

◆ split_axis

template<typename BV >
int coal::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 107 of file coal/internal/BV_splitter.h.

◆ split_method

template<typename BV >
SplitMethodType coal::BVSplitter< BV >::split_method
protected

The split algorithm used.

Definition at line 125 of file coal/internal/BV_splitter.h.

◆ split_value

template<typename BV >
CoalScalar coal::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 113 of file coal/internal/BV_splitter.h.

◆ split_vector

template<typename BV >
Vec3s coal::BVSplitter< BV >::split_vector
protected

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

◆ tri_indices

template<typename BV >
Triangle* coal::BVSplitter< BV >::tri_indices
protected

The triangles handled by the splitter.

Definition at line 119 of file coal/internal/BV_splitter.h.

◆ type

template<typename BV >
BVHModelType coal::BVSplitter< BV >::type
protected

Whether the geometry is mesh or point cloud.

Definition at line 122 of file coal/internal/BV_splitter.h.

◆ vertices

template<typename BV >
Vec3s* coal::BVSplitter< BV >::vertices
protected

The mesh vertices or points handled by the splitter.

Definition at line 116 of file coal/internal/BV_splitter.h.


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


hpp-fcl
Author(s):
autogenerated on Sat Nov 23 2024 03:45:00