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.