70 template<
typename S,
typename T>
71 struct FCL_EXPORT morton_functor {};
75 struct FCL_EXPORT morton_functor<S,
uint32>
77 morton_functor(
const AABB<S>& bbox);
81 const Vector3<S> base;
84 static constexpr
size_t bits();
87 using morton_functoru32f = morton_functor<float, uint32>;
88 using morton_functoru32d = morton_functor<double, uint32>;
92 struct FCL_EXPORT morton_functor<S,
uint64>
94 morton_functor(
const AABB<S>& bbox);
98 const Vector3<S> base;
101 static constexpr
size_t bits();
104 using morton_functoru64f = morton_functor<float, uint64>;
105 using morton_functoru64d = morton_functor<double, uint64>;
109 template<
typename S,
size_t N>
110 struct FCL_EXPORT morton_functor<S, std::bitset<N>>
112 static_assert(N%3==0,
"Number of bits must be a multiple of 3");
114 morton_functor(
const AABB<S>& bbox);
116 std::bitset<N> operator() (
const Vector3<S>&
point)
const;
118 const Vector3<S> base;
119 const Vector3<S> inv;
121 static constexpr
size_t bits();