SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
quadblocks.h
Go to the documentation of this file.
1
17#ifndef OPENSWMMVIS_MESH_QUADBLOCKS_H
18#define OPENSWMMVIS_MESH_QUADBLOCKS_H
19
20#include "mesh/meshquadregion.h"
21
22#include <QPointF>
23#include <QPolygonF>
24#include <QRectF>
25#include <QVector>
26#include <functional>
27
28namespace mesh
29{
30
31struct MeshResult;
32
35 QPointF origin;
36 double pitch = 0.0;
37 int cols = 0, rows = 0;
38 QVector<float> h;
39
47 [[nodiscard]] bool isValid() const
48 {
49 return pitch > 0.0 && cols > 0 && rows > 0 && h.size() == qsizetype(cols) * rows;
50 }
51};
52
54 double minSpacing = 0.0;
55 double bandRatio = 1.3;
57 int maxBlocks = 50000;
58};
59
85 const QVector<QVector<QPointF>> &blockers);
86// Bounded pre-triangulation candidate grid from the immutable size field.
87// No triangle pilot pass is needed. Candidates still require geometric and
88// metric/terrain validation by the joint planner. Zero/unbounded targets are
89// unusable. Cancellation/invalid layouts return an invalid grid.
90QuadBlockGrid quadBlockGridFromField(const QRectF &,double pitch,
91 const std::function<double(const QRectF &)> &maximumSize,
92 const QVector<QVector<QPointF>> &blockers,
93 const std::function<bool()> &cancelled = {},qint64 maximumCells = 1000000);
94
117QVector<QuadRegion> placeQuadBlocks(const QuadBlockGrid &grid, const QuadBlockOptions &options);
118
119} // namespace mesh
120
121#endif // OPENSWMMVIS_MESH_QUADBLOCKS_H
MeshSpatialGrid grid
Definition mesh2dresultsexport.cpp:689
PSLG quad regions (workplans/QUAD_MESHING_REDESIGN_PLAN_2026-09-06.md §3, §4.1): closed polygons insi...
Definition meshcommands.h:38
QuadBlockGrid quadBlockGridFromMesh(const MeshResult &mesh, double pitch, const QVector< QVector< QPointF > > &blockers)
Estimate local equilateral side lengths from triangles and mask existing quads/features.
Definition quadblocks.cpp:6
QVector< QuadRegion > placeQuadBlocks(const QuadBlockGrid &grid, const QuadBlockOptions &options)
Greedily select axis-aligned mapped quad regions from approximately uniform usable grid bands.
Definition quadblocks.cpp:8
QuadBlockGrid quadBlockGridFromField(const QRectF &, double pitch, const std::function< double(const QRectF &)> &maximumSize, const QVector< QVector< QPointF > > &blockers, const std::function< bool()> &cancelled={}, qint64 maximumCells=1000000)
Definition quadblocks.cpp:7
const ConstraintAuditOptions & options
Definition constraintaudit.cpp:34
Result of MeshGenerator::generate.
Definition meshresult.h:181
Local cell size on a regular grid; NaN marks unusable cells.
Definition quadblocks.h:34
bool isValid() const
Check the basic grid dimensions, positive pitch and exact h-vector extent.
Definition quadblocks.h:47
int cols
Definition quadblocks.h:37
QPointF origin
Lower-left corner of cell (0, 0).
Definition quadblocks.h:35
int rows
Definition quadblocks.h:37
QVector< float > h
Row-major, cols x rows.
Definition quadblocks.h:38
double pitch
Definition quadblocks.h:36
Definition quadblocks.h:53
int maxBlocks
Definition quadblocks.h:57
double minSpacing
Blocks finer than this are not worth a patch.
Definition quadblocks.h:54
int minQuadsPerSide
Definition quadblocks.h:56
double bandRatio
Size bands are powers of this.
Definition quadblocks.h:55
bool cancelled
Definition vectorexport.cpp:214