A class describing the split rule that splits each BV node. More...
#include <BVH_model.h>
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 |
Triangle * | tri_indices |
The triangles handled by the splitter. More... | |
BVHModelType | type |
Whether the geometry is mesh or point cloud. More... | |
Vec3f * | vertices |
The mesh vertices or points handled by the splitter. More... | |
A class describing the split rule that splits each BV node.
Definition at line 59 of file BVH/BVH_model.h.
|
inline |
Definition at line 61 of file internal/BV_splitter.h.
|
inlinevirtual |
Default deconstructor.
Definition at line 65 of file internal/BV_splitter.h.
|
inline |
Apply the split rule on a given point.
Definition at line 94 of file internal/BV_splitter.h.
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBB >::apply | ( | const Vec3f & | q | ) | const |
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< RSS >::apply | ( | const Vec3f & | q | ) | const |
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< kIOS >::apply | ( | const Vec3f & | q | ) | const |
bool HPP_FCL_DLLAPI hpp::fcl::BVSplitter< OBBRSS >::apply | ( | const Vec3f & | q | ) | const |
bool hpp::fcl::BVSplitter< OBB >::apply | ( | const Vec3f & | q | ) | const |
Definition at line 262 of file BV_splitter.cpp.
bool hpp::fcl::BVSplitter< RSS >::apply | ( | const Vec3f & | q | ) | const |
Definition at line 267 of file BV_splitter.cpp.
bool hpp::fcl::BVSplitter< kIOS >::apply | ( | const Vec3f & | q | ) | const |
Definition at line 272 of file BV_splitter.cpp.
bool hpp::fcl::BVSplitter< OBBRSS >::apply | ( | const Vec3f & | q | ) | const |
Definition at line 277 of file BV_splitter.cpp.
|
inline |
Clear the geometry data set before.
Definition at line 97 of file internal/BV_splitter.h.
|
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.
|
inlineprotected |
Split algorithm 1: Split the node from center.
Definition at line 129 of file internal/BV_splitter.h.
|
protected |
Definition at line 157 of file BV_splitter.cpp.
|
protected |
Definition at line 183 of file BV_splitter.cpp.
|
protected |
Definition at line 209 of file BV_splitter.cpp.
|
protected |
|
protected |
Definition at line 235 of file BV_splitter.cpp.
|
protected |
|
protected |
|
protected |
|
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.
|
protected |
Definition at line 164 of file BV_splitter.cpp.
|
protected |
Definition at line 190 of file BV_splitter.cpp.
|
protected |
Definition at line 216 of file BV_splitter.cpp.
|
protected |
|
protected |
Definition at line 242 of file BV_splitter.cpp.
|
protected |
|
protected |
|
protected |
|
protected |
Definition at line 173 of file BV_splitter.cpp.
|
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.
|
protected |
Definition at line 199 of file BV_splitter.cpp.
|
protected |
Definition at line 225 of file BV_splitter.cpp.
|
protected |
|
protected |
|
protected |
Definition at line 252 of file BV_splitter.cpp.
|
protected |
|
protected |
|
inline |
Set the geometry data needed by the split rule.
Definition at line 68 of file internal/BV_splitter.h.
|
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.
|
protected |
The split algorithm used.
Definition at line 126 of file internal/BV_splitter.h.
|
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.
|
protected |
Definition at line 109 of file internal/BV_splitter.h.
|
protected |
The triangles handled by the splitter.
Definition at line 120 of file internal/BV_splitter.h.
|
protected |
Whether the geometry is mesh or point cloud.
Definition at line 123 of file internal/BV_splitter.h.
|
protected |
The mesh vertices or points handled by the splitter.
Definition at line 117 of file internal/BV_splitter.h.