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
sizefield.h
Go to the documentation of this file.
1
41#ifndef OPENSWMMVIS_MESH_SIZEFIELD_H
42#define OPENSWMMVIS_MESH_SIZEFIELD_H
43
44#include "mesh/meshgenerator.h"
45
46#include <QRectF>
47#include <QVector>
48
49namespace mesh {
50
52{
56 double nearSize = 0.0;
57
63 double gradation = 0.25;
64
68 double areaFloor = 0.0;
69
73 qint64 maxGridCells = 4'000'000;
74
90 bool terrainDensity = false;
91};
92
101{
102public:
112 bool build(const QRectF &bbox,
113 const QVector<ConstraintSegment> &segs,
114 const QVector<QVector<QPointF>> &rings,
115 const QVector<SteinerPoint> &pts,
116 const SizeFieldOptions &opt);
117
121 [[nodiscard]] double targetAreaAt(double x, double y) const;
122
123 [[nodiscard]] bool isValid() const { return m_cols > 0 && m_rows > 0; }
124 [[nodiscard]] double pitch() const { return m_pitch; }
125 [[nodiscard]] int cols() const { return m_cols; }
126 [[nodiscard]] int rows() const { return m_rows; }
127
130 [[nodiscard]] double distanceAt(double x, double y) const;
131
135 [[nodiscard]] double terrainSizeAt(double x, double y) const;
136
137private:
138 [[nodiscard]] double cellDist(int cx, int cy) const;
139 [[nodiscard]] double cellTerrain(int cx, int cy) const;
140 void stampSeedPoint(const QPointF &p);
141 void stampSeedSegment(const QPointF &a, const QPointF &b);
142
143 QVector<float> m_dist;
144 QVector<float> m_hTerrain;
145 int m_cols = 0, m_rows = 0;
146 double m_x0 = 0.0, m_y0 = 0.0;
147 double m_pitch = 0.0;
148 double m_near = 0.0, m_g = 0.0, m_floor = 0.0;
149};
150
151} // namespace mesh
152
153#endif // OPENSWMMVIS_MESH_SIZEFIELD_H
Distance-to-feature field sampled as a max-area function.
Definition sizefield.h:101
double pitch() const
Definition sizefield.h:124
bool build(const QRectF &bbox, const QVector< ConstraintSegment > &segs, const QVector< QVector< QPointF > > &rings, const QVector< SteinerPoint > &pts, const SizeFieldOptions &opt)
Build the field. Returns false (and leaves the field invalid) when there is nothing to build from — d...
Definition sizefield.cpp:39
int cols() const
Definition sizefield.h:125
double distanceAt(double x, double y) const
Definition sizefield.cpp:245
double targetAreaAt(double x, double y) const
Definition sizefield.cpp:295
bool isValid() const
Definition sizefield.h:123
int rows() const
Definition sizefield.h:126
double terrainSizeAt(double x, double y) const
Definition sizefield.cpp:270
ArrowPlacement p
Definition linesymbollayer.cpp:27
std::vector< double > cx
Definition mesh2dresultsexport.cpp:103
std::vector< double > cy
area centroid per cell
Definition mesh2dresultsexport.cpp:103
QRectF bbox
Definition meshgenerator.cpp:166
QVector< QPointF > pts
Definition meshpatch.cpp:62
int b
local residual indices, a < b
Definition meshquadmatch.cpp:46
int a
Definition meshquadmatch.cpp:46
Definition meshcommands.h:302
Definition sizefield.h:52
qint64 maxGridCells
Definition sizefield.h:73
double nearSize
Definition sizefield.h:56
double gradation
Definition sizefield.h:63
double areaFloor
Definition sizefield.h:68
bool terrainDensity
Definition sizefield.h:90