|
coal 3.0.1
Coal, The Collision Detection Library. Previously known as HPP-FCL, fork of FCL -- The Flexible Collision Library
|
A class describing the split rule that splits each BV node. More...
#include <coal/internal/BV_splitter.h>


Public Member Functions | |
| BVSplitter (SplitMethodType method) | |
| virtual | ~BVSplitter () |
| Default deconstructor. | |
| void | set (Vec3s *vertices_, Triangle32 *tri_indices_, BVHModelType type_) |
| Set the geometry data needed by the split rule. | |
| 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. | |
| bool | apply (const Vec3s &q) const |
| Apply the split rule on a given point. | |
| void | clear () |
| Clear the geometry data set before. | |
| bool | apply (const Vec3s &q) const |
| bool | apply (const Vec3s &q) const |
| bool | apply (const Vec3s &q) const |
| bool | apply (const Vec3s &q) const |
Protected Member Functions | |
| void | computeRule_bvcenter (const BV &bv, unsigned int *, unsigned int) |
| Split algorithm 1: Split the node from center. | |
| 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. | |
| 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. | |
| void | computeRule_bvcenter (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_mean (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_median (const OBB &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_bvcenter (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_mean (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_median (const RSS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_bvcenter (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_mean (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_median (const kIOS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_bvcenter (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | computeRule_mean (const OBBRSS &bv, unsigned int *primitive_indices, unsigned int num_primitives) |
| void | 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. | |
| Vec3s | split_vector |
| Scalar | split_value |
| The split threshold, different primitives are splitted according whether their projection on the split_axis is larger or smaller than the threshold. | |
| Vec3s * | vertices |
| The mesh vertices or points handled by the splitter. | |
| Triangle32 * | tri_indices |
| The triangles handled by the splitter. | |
| BVHModelType | type |
| Whether the geometry is mesh or point cloud. | |
| SplitMethodType | split_method |
| The split algorithm used. | |
A class describing the split rule that splits each BV node.
|
inline |
|
inlinevirtual |
Default deconstructor.
Apply the split rule on a given point.
| bool coal::BVSplitter< OBB >::apply | ( | const Vec3s & | q | ) | const |
| bool coal::BVSplitter< RSS >::apply | ( | const Vec3s & | q | ) | const |
| bool coal::BVSplitter< kIOS >::apply | ( | const Vec3s & | q | ) | const |
| bool coal::BVSplitter< OBBRSS >::apply | ( | const Vec3s & | q | ) | const |
|
inline |
Clear the geometry data set before.
|
inline |
Compute the split rule according to a subset of geometry and the corresponding BV node.
|
inlineprotected |
Split algorithm 1: Split the node from center.
|
protected |
|
protected |
|
protected |
|
protected |
|
inlineprotected |
Split algorithm 2: Split the node according to the mean of the data contained.
|
protected |
|
protected |
|
protected |
|
protected |
|
inlineprotected |
Split algorithm 3: Split the node according to the median of the data contained.
|
protected |
|
protected |
|
protected |
|
protected |
|
inline |
Set the geometry data needed by the split rule.
|
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.
|
protected |
The split algorithm used.
|
protected |
The split threshold, different primitives are splitted according whether their projection on the split_axis is larger or smaller than the threshold.
|
protected |
|
protected |
The triangles handled by the splitter.
|
protected |
Whether the geometry is mesh or point cloud.
|
protected |
The mesh vertices or points handled by the splitter.