A class describing the split rule that splits each BV node. More...
#include <BV_splitter.h>
Public Member Functions | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
template<> | |
bool | apply (const Vec3f &q) const |
Apply the split rule on a given point. | |
BVSplitter (SplitMethodType method) | |
void | clear () |
Clear the geometry data set before. | |
void | computeRule (const BV &bv, unsigned int *primitive_indices, int num_primitives) |
Compute the split rule according to a subset of geometry and the corresponding BV node. | |
void | set (Vec3f *vertices_, Triangle *tri_indices_, BVHModelType type_) |
Set the geometry data needed by the split rule. | |
virtual | ~BVSplitter () |
Default deconstructor. | |
Private Member Functions | |
void | computeRule_bvcenter (const BV &bv, unsigned int *primitive_indices, int num_primitives) |
Split algorithm 1: Split the node from center. | |
template<> | |
void | computeRule_bvcenter (const OBB &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_bvcenter (const RSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_bvcenter (const kIOS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_bvcenter (const OBBRSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_bvcenter (const OBB &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_bvcenter (const RSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_bvcenter (const kIOS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_bvcenter (const OBBRSS &bv, unsigned int *primitive_indices, int num_primitives) |
void | computeRule_mean (const BV &bv, unsigned int *primitive_indices, int num_primitives) |
Split algorithm 2: Split the node according to the mean of the data contained. | |
template<> | |
void | computeRule_mean (const OBB &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_mean (const RSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_mean (const kIOS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_mean (const OBBRSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_mean (const OBB &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_mean (const RSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_mean (const kIOS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_mean (const OBBRSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_median (const OBB &bv, unsigned int *primitive_indices, int num_primitives) |
void | computeRule_median (const BV &bv, unsigned int *primitive_indices, int num_primitives) |
Split algorithm 3: Split the node according to the median of the data contained. | |
template<> | |
void | computeRule_median (const RSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_median (const kIOS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_median (const OBBRSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_median (const OBB &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_median (const RSS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_median (const kIOS &bv, unsigned int *primitive_indices, int num_primitives) |
template<> | |
void | computeRule_median (const OBBRSS &bv, unsigned int *primitive_indices, int num_primitives) |
Private 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. | |
SplitMethodType | split_method |
The split algorithm used. | |
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. | |
Vec3f | split_vector |
Triangle * | tri_indices |
The triangles handled by the splitter. | |
BVHModelType | type |
Whether the geometry is mesh or point cloud. | |
Vec3f * | vertices |
The mesh vertices or points handled by the splitter. |
A class describing the split rule that splits each BV node.
Definition at line 74 of file BV_splitter.h.
fcl::BVSplitter< BV >::BVSplitter | ( | SplitMethodType | method | ) | [inline] |
Definition at line 78 of file BV_splitter.h.
virtual fcl::BVSplitter< BV >::~BVSplitter | ( | ) | [inline, virtual] |
Default deconstructor.
Definition at line 83 of file BV_splitter.h.
bool fcl::BVSplitter< BV >::apply | ( | const Vec3f & | q | ) | const [inline, virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
Definition at line 113 of file BV_splitter.h.
bool fcl::BVSplitter< OBB >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
bool fcl::BVSplitter< RSS >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
bool fcl::BVSplitter< kIOS >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
bool fcl::BVSplitter< OBBRSS >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
bool fcl::BVSplitter< OBB >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
Definition at line 258 of file BV_splitter.cpp.
bool fcl::BVSplitter< RSS >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
Definition at line 264 of file BV_splitter.cpp.
bool fcl::BVSplitter< kIOS >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
Definition at line 270 of file BV_splitter.cpp.
bool fcl::BVSplitter< OBBRSS >::apply | ( | const Vec3f & | q | ) | const [virtual] |
Apply the split rule on a given point.
Implements fcl::BVSplitterBase< BV >.
Definition at line 276 of file BV_splitter.cpp.
void fcl::BVSplitter< BV >::clear | ( | ) | [inline, virtual] |
Clear the geometry data set before.
Implements fcl::BVSplitterBase< BV >.
Definition at line 119 of file BV_splitter.h.
void fcl::BVSplitter< BV >::computeRule | ( | const BV & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [inline, virtual] |
Compute the split rule according to a subset of geometry and the corresponding BV node.
Implements fcl::BVSplitterBase< BV >.
Definition at line 94 of file BV_splitter.h.
void fcl::BVSplitter< BV >::computeRule_bvcenter | ( | const BV & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [inline, private] |
Split algorithm 1: Split the node from center.
Definition at line 149 of file BV_splitter.h.
void fcl::BVSplitter< OBB >::computeRule_bvcenter | ( | const OBB & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 173 of file BV_splitter.cpp.
void fcl::BVSplitter< RSS >::computeRule_bvcenter | ( | const RSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 194 of file BV_splitter.cpp.
void fcl::BVSplitter< kIOS >::computeRule_bvcenter | ( | const kIOS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 215 of file BV_splitter.cpp.
void fcl::BVSplitter< OBBRSS >::computeRule_bvcenter | ( | const OBBRSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 236 of file BV_splitter.cpp.
void fcl::BVSplitter< OBB >::computeRule_bvcenter | ( | const OBB & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< RSS >::computeRule_bvcenter | ( | const RSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< kIOS >::computeRule_bvcenter | ( | const kIOS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< OBBRSS >::computeRule_bvcenter | ( | const OBBRSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< BV >::computeRule_mean | ( | const BV & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [inline, private] |
Split algorithm 2: Split the node according to the mean of the data contained.
Definition at line 164 of file BV_splitter.h.
void fcl::BVSplitter< OBB >::computeRule_mean | ( | const OBB & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 180 of file BV_splitter.cpp.
void fcl::BVSplitter< RSS >::computeRule_mean | ( | const RSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 201 of file BV_splitter.cpp.
void fcl::BVSplitter< kIOS >::computeRule_mean | ( | const kIOS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 222 of file BV_splitter.cpp.
void fcl::BVSplitter< OBBRSS >::computeRule_mean | ( | const OBBRSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 243 of file BV_splitter.cpp.
void fcl::BVSplitter< OBB >::computeRule_mean | ( | const OBB & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< RSS >::computeRule_mean | ( | const RSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< kIOS >::computeRule_mean | ( | const kIOS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< OBBRSS >::computeRule_mean | ( | const OBBRSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< OBB >::computeRule_median | ( | const OBB & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 187 of file BV_splitter.cpp.
void fcl::BVSplitter< BV >::computeRule_median | ( | const BV & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [inline, private] |
Split algorithm 3: Split the node according to the median of the data contained.
Definition at line 198 of file BV_splitter.h.
void fcl::BVSplitter< RSS >::computeRule_median | ( | const RSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 208 of file BV_splitter.cpp.
void fcl::BVSplitter< kIOS >::computeRule_median | ( | const kIOS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 229 of file BV_splitter.cpp.
void fcl::BVSplitter< OBBRSS >::computeRule_median | ( | const OBBRSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
Definition at line 250 of file BV_splitter.cpp.
void fcl::BVSplitter< OBB >::computeRule_median | ( | const OBB & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< RSS >::computeRule_median | ( | const RSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< kIOS >::computeRule_median | ( | const kIOS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< OBBRSS >::computeRule_median | ( | const OBBRSS & | bv, |
unsigned int * | primitive_indices, | ||
int | num_primitives | ||
) | [private] |
void fcl::BVSplitter< BV >::set | ( | Vec3f * | vertices_, |
Triangle * | tri_indices_, | ||
BVHModelType | type_ | ||
) | [inline, virtual] |
Set the geometry data needed by the split rule.
Implements fcl::BVSplitterBase< BV >.
Definition at line 86 of file BV_splitter.h.
int fcl::BVSplitter< BV >::split_axis [private] |
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 130 of file BV_splitter.h.
SplitMethodType fcl::BVSplitter< BV >::split_method [private] |
The split algorithm used.
Definition at line 146 of file BV_splitter.h.
FCL_REAL fcl::BVSplitter< BV >::split_value [private] |
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 134 of file BV_splitter.h.
Vec3f fcl::BVSplitter< BV >::split_vector [private] |
Definition at line 131 of file BV_splitter.h.
Triangle* fcl::BVSplitter< BV >::tri_indices [private] |
The triangles handled by the splitter.
Definition at line 140 of file BV_splitter.h.
BVHModelType fcl::BVSplitter< BV >::type [private] |
Whether the geometry is mesh or point cloud.
Definition at line 143 of file BV_splitter.h.
Vec3f* fcl::BVSplitter< BV >::vertices [private] |
The mesh vertices or points handled by the splitter.
Definition at line 137 of file BV_splitter.h.