37#ifndef OPENSWMMVIS_LAYERS_MESHSPATIALGRID_H
38#define OPENSWMMVIS_LAYERS_MESHSPATIALGRID_H
84 mutable std::vector<quint32>
seen;
109 void rebuild(
const QVector<QRectF> &bboxes);
117 [[nodiscard]] QVector<int>
query(
const QRectF &rect)
const;
138 const int *&begin,
const int *&end)
const
140 begin = end =
nullptr;
141 if (
cellOffsets.isEmpty() || !std::isfinite(x) || !std::isfinite(y))
143 const int cx = std::clamp(
int(std::floor((x -
extent.left()) /
cellW)), 0,
cols - 1);
144 const int cy = std::clamp(
int(std::floor((y -
extent.top()) /
cellH)), 0,
rows - 1);
std::vector< double > cx
Definition mesh2dresultsexport.cpp:103
std::vector< double > cy
area centroid per cell
Definition mesh2dresultsexport.cpp:103
int k
Definition mesh2dresultsexport.cpp:549
Uniform spatial grid index over a set of axis-aligned bboxes.
Definition meshspatialgrid.h:63
double cellW
Definition meshspatialgrid.h:66
void candidatesAtPoint(double x, double y, const int *&begin, const int *&end) const
Candidate bbox indices for the single grid cell containing the point (x,y), returned as the CSR slice...
Definition meshspatialgrid.h:137
QVector< int > cellOffsets
Definition meshspatialgrid.h:76
QVector< int > query(const QRectF &rect) const
Return the bbox indices whose bboxes intersect rect.
Definition meshspatialgrid.cpp:170
std::vector< quint32 > seen
Definition meshspatialgrid.h:84
int rows
Definition meshspatialgrid.h:69
QVector< int > cellIndices
Definition meshspatialgrid.h:77
bool isEmpty() const
Definition meshspatialgrid.h:99
QRectF extent
Definition meshspatialgrid.h:65
void rebuild(const QVector< QRectF > &bboxes)
(Re)build the grid from a set of bboxes.
Definition meshspatialgrid.cpp:39
double cellH
Definition meshspatialgrid.h:67
void clear()
Definition meshspatialgrid.h:87
int cols
Definition meshspatialgrid.h:68
quint32 epoch
Definition meshspatialgrid.h:85
int avgPerCell
Definition meshspatialgrid.h:83