7 start_augmentation(start_aug_),
8 radius_augmentation(radius_aug_),
12 double angle_deg = std::atan2(y, x) * 180.0 / M_PI;
15 if (angle_deg < 0.0 || angle_deg >=
fov) {
19 return static_cast<int>(std::floor(angle_deg /
angle));
23 double distance = std::sqrt(x * x + y * y);
27 bin_idx =
static_cast<int>(std::floor(distance /
radius));
32 const double disc = b * b + 4.0 * a * d;
33 const double n_pos = (-b + std::sqrt(disc)) / (2.0 * a);
34 const int n =
static_cast<int>(std::floor(n_pos)) + 1;
38 return std::max(bin_idx, 0);
42 return std::max(1,
static_cast<int>(std::ceil(
fov /
angle)));
48 num_bins =
static_cast<int>(std::ceil(range /
radius));
54 double current_bin_size =
radius;
56 while (dist_remaining > 0) {
57 dist_remaining -= current_bin_size;
58 if (dist_remaining >= 0) {
double radius_augmentation
int get_bin_index(double x, double y) const
Compute bin index for a given (x, y)
int get_slice_index(double x, double y) const
Compute slice index for a given (x, y)
double start_augmentation
GridGeometry(double angle_, double radius_, double start_aug_, double radius_aug_, double fov_)
Constructor to initialize grid geometry parameters.
int get_num_slices() const
Get the number of slices in the grid.
int get_num_bins(double range) const
Get the number of bins for a given range.