38#ifndef COAL_BROADPHASE_SPATIALHASH_INL_H 
   39#define COAL_BROADPHASE_SPATIALHASH_INL_H 
   49    : cell_size(cell_size_), scene_limit(scene_limit_) {
 
   50  width[0] = std::ceil(scene_limit.
width() / cell_size);
 
   51  width[1] = std::ceil(scene_limit.
height() / cell_size);
 
   52  width[2] = std::ceil(scene_limit.
depth() / cell_size);
 
 
   57  int min_x = std::floor((aabb.
min_[0] - scene_limit.
min_[0]) / cell_size);
 
   58  int max_x = std::ceil((aabb.
max_[0] - scene_limit.
min_[0]) / cell_size);
 
   59  int min_y = std::floor((aabb.
min_[1] - scene_limit.
min_[1]) / cell_size);
 
   60  int max_y = std::ceil((aabb.
max_[1] - scene_limit.
min_[1]) / cell_size);
 
   61  int min_z = std::floor((aabb.
min_[2] - scene_limit.
min_[2]) / cell_size);
 
   62  int max_z = std::ceil((aabb.
max_[2] - scene_limit.
min_[2]) / cell_size);
 
   64  std::vector<unsigned int> keys((max_x - min_x) * (max_y - min_y) *
 
   67  for (
int x = min_x; x < max_x; ++x) {
 
   68    for (
int y = min_y; y < max_y; ++y) {
 
   69      for (
int z = min_z; z < max_z; ++z) {
 
   70        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:55
 
Scalar depth() const
Depth of the AABB.
Definition AABB.h:173
 
Scalar width() const
Width of the AABB.
Definition AABB.h:167
 
Scalar height() const
Height of the AABB.
Definition AABB.h:170
 
Vec3s min_
The min point in the AABB.
Definition AABB.h:58
 
Vec3s max_
The max point in the AABB.
Definition AABB.h:60
 
Main namespace.
Definition broadphase_bruteforce.h:44
 
double Scalar
Definition data_types.h:68
 
SpatialHash(const AABB &scene_limit_, Scalar cell_size_)
Definition spatial_hash-inl.h:48
 
std::vector< unsigned int > operator()(const AABB &aabb) const
Definition spatial_hash-inl.h:56