38 #ifndef FCL_BV_SPLITTER_H 39 #define FCL_BV_SPLITTER_H 43 #include "fcl/math/triangle.h" 44 #include "fcl/math/bv/kIOS.h" 45 #include "fcl/math/bv/OBBRSS.h" 46 #include "fcl/geometry/bvh/BVH_internal.h" 47 #include "fcl/geometry/bvh/detail/BV_splitter_base.h" 60 SPLIT_METHOD_BV_CENTER
64 template <
typename BV>
69 using S =
typename BV::S;
83 const BV& bv,
unsigned int* primitive_indices,
int num_primitives);
86 bool apply(
const Vector3<S>& q)
const;
98 Vector3<S> split_vector;
106 Vector3<S>* vertices;
115 SplitMethodType split_method;
118 void computeRule_bvcenter(
119 const BV& bv,
unsigned int* primitive_indices,
int num_primitives);
123 void computeRule_mean(
124 const BV& bv,
unsigned int* primitive_indices,
int num_primitives);
128 void computeRule_median(
129 const BV& bv,
unsigned int* primitive_indices,
int num_primitives);
131 template <
typename,
typename>
134 template <
typename,
typename>
137 template <
typename,
typename>
140 template <
typename,
typename>
144 template <
typename S,
typename BV>
145 void computeSplitVector(
const BV& bv, Vector3<S>& split_vector);
147 template <
typename S,
typename BV>
148 void computeSplitValue_bvcenter(
const BV& bv, S& split_value);
150 template <
typename S,
typename BV>
151 void computeSplitValue_mean(
153 Vector3<S>* vertices,
155 unsigned int* primitive_indices,
158 const Vector3<S>& split_vector,
161 template <
typename S,
typename BV>
162 void computeSplitValue_median(
164 Vector3<S>* vertices,
166 unsigned int* primitive_indices,
169 const Vector3<S>& split_vector,
175 #include "fcl/geometry/bvh/detail/BV_splitter-inl.h" Base interface for BV splitting algorithm.
Definition: BV_splitter_base.h:56
Main namespace.
Definition: broadphase_bruteforce-inl.h:45
BVHModelType
BVH model type.
Definition: BVH_internal.h:75
virtual ~BVSplitter()
Default deconstructor.
Definition: BV_splitter-inl.h:59
void clear()
Clear the geometry data set before.
Definition: BV_splitter-inl.h:502
Triangle with 3 indices for points.
Definition: triangle.h:47
bool apply(const Vector3< S > &q) const
Apply the split rule on a given point.
Definition: BV_splitter-inl.h:108
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...
Definition: BV_splitter-inl.h:76
Definition: BV_splitter-inl.h:97
Definition: BV_splitter-inl.h:147
A class describing the split rule that splits each BV node.
Definition: BV_splitter.h:65
Definition: BV_splitter-inl.h:115