All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Member Functions | Private Attributes
fcl::BVSplitter< BV > Class Template Reference

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

#include <BV_splitter.h>

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

List of all members.

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
Triangletri_indices
 The triangles handled by the splitter.
BVHModelType type
 Whether the geometry is mesh or point cloud.
Vec3fvertices
 The mesh vertices or points handled by the splitter.

Detailed Description

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

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

Definition at line 74 of file BV_splitter.h.


Constructor & Destructor Documentation

template<typename BV >
fcl::BVSplitter< BV >::BVSplitter ( SplitMethodType  method) [inline]

Definition at line 78 of file BV_splitter.h.

template<typename BV >
virtual fcl::BVSplitter< BV >::~BVSplitter ( ) [inline, virtual]

Default deconstructor.

Definition at line 83 of file BV_splitter.h.


Member Function Documentation

template<typename BV >
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.

template<>
bool fcl::BVSplitter< OBB >::apply ( const Vec3f q) const [virtual]

Apply the split rule on a given point.

Implements fcl::BVSplitterBase< BV >.

template<>
bool fcl::BVSplitter< RSS >::apply ( const Vec3f q) const [virtual]

Apply the split rule on a given point.

Implements fcl::BVSplitterBase< BV >.

template<>
bool fcl::BVSplitter< kIOS >::apply ( const Vec3f q) const [virtual]

Apply the split rule on a given point.

Implements fcl::BVSplitterBase< BV >.

template<>
bool fcl::BVSplitter< OBBRSS >::apply ( const Vec3f q) const [virtual]

Apply the split rule on a given point.

Implements fcl::BVSplitterBase< BV >.

template<>
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.

template<>
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.

template<>
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.

template<>
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.

template<typename BV >
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.

template<typename BV >
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.

template<typename BV >
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.

template<>
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.

template<>
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.

template<>
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.

template<>
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.

template<>
void fcl::BVSplitter< OBB >::computeRule_bvcenter ( const OBB bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< RSS >::computeRule_bvcenter ( const RSS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< kIOS >::computeRule_bvcenter ( const kIOS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< OBBRSS >::computeRule_bvcenter ( const OBBRSS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<typename BV >
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.

template<>
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.

template<>
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.

template<>
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.

template<>
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.

template<>
void fcl::BVSplitter< OBB >::computeRule_mean ( const OBB bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< RSS >::computeRule_mean ( const RSS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< kIOS >::computeRule_mean ( const kIOS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< OBBRSS >::computeRule_mean ( const OBBRSS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
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.

template<typename BV >
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.

template<>
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.

template<>
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.

template<>
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.

template<>
void fcl::BVSplitter< OBB >::computeRule_median ( const OBB bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< RSS >::computeRule_median ( const RSS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< kIOS >::computeRule_median ( const kIOS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<>
void fcl::BVSplitter< OBBRSS >::computeRule_median ( const OBBRSS bv,
unsigned int *  primitive_indices,
int  num_primitives 
) [private]
template<typename BV >
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.


Member Data Documentation

template<typename BV >
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.

template<typename BV >
SplitMethodType fcl::BVSplitter< BV >::split_method [private]

The split algorithm used.

Definition at line 146 of file BV_splitter.h.

template<typename BV >
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.

template<typename BV >
Vec3f fcl::BVSplitter< BV >::split_vector [private]

Definition at line 131 of file BV_splitter.h.

template<typename BV >
Triangle* fcl::BVSplitter< BV >::tri_indices [private]

The triangles handled by the splitter.

Definition at line 140 of file BV_splitter.h.

template<typename BV >
BVHModelType fcl::BVSplitter< BV >::type [private]

Whether the geometry is mesh or point cloud.

Definition at line 143 of file BV_splitter.h.

template<typename BV >
Vec3f* fcl::BVSplitter< BV >::vertices [private]

The mesh vertices or points handled by the splitter.

Definition at line 137 of file BV_splitter.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


fcl
Author(s): Jia Pan
autogenerated on Tue Jan 15 2013 16:05:31