38 #ifndef HPP_FCL_BROADPHASE_SPATIALHASH_INL_H
39 #define HPP_FCL_BROADPHASE_SPATIALHASH_INL_H
50 : cell_size(cell_size_), scene_limit(scene_limit_) {
51 width[0] = std::ceil(scene_limit.
width() / cell_size);
52 width[1] = std::ceil(scene_limit.
height() / cell_size);
53 width[2] = std::ceil(scene_limit.
depth() / cell_size);
58 int min_x = std::floor((aabb.
min_[0] - scene_limit.
min_[0]) / cell_size);
59 int max_x = std::ceil((aabb.
max_[0] - scene_limit.
min_[0]) / cell_size);
60 int min_y = std::floor((aabb.
min_[1] - scene_limit.
min_[1]) / cell_size);
61 int max_y = std::ceil((aabb.
max_[1] - scene_limit.
min_[1]) / cell_size);
62 int min_z = std::floor((aabb.
min_[2] - scene_limit.
min_[2]) / cell_size);
63 int max_z = std::ceil((aabb.
max_[2] - scene_limit.
min_[2]) / cell_size);
65 std::vector<unsigned int> keys((max_x - min_x) * (max_y - min_y) *
68 for (
int x = min_x; x < max_x; ++x) {
69 for (
int y = min_y; y < max_y; ++y) {
70 for (
int z = min_z; z < max_z; ++z) {
71 keys[
id++] = x + y * width[0] + z * width[0] * width[1];
A class describing the AABB collision structure, which is a box in 3D space determined by two diagona...
Definition: AABB.h:56
Vec3f max_
The max point in the AABB.
Definition: AABB.h:61
FCL_REAL depth() const
Depth of the AABB.
Definition: AABB.h:174
FCL_REAL width() const
Width of the AABB.
Definition: AABB.h:168
Vec3f min_
The min point in the AABB.
Definition: AABB.h:59
FCL_REAL height() const
Height of the AABB.
Definition: AABB.h:171
double FCL_REAL
Definition: data_types.h:66
Main namespace.
Definition: broadphase_bruteforce.h:44
std::vector< unsigned int > operator()(const AABB &aabb) const
Definition: spatial_hash-inl.h:57
SpatialHash(const AABB &scene_limit_, FCL_REAL cell_size_)
Definition: spatial_hash-inl.h:49