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
pslgminsize.h
Go to the documentation of this file.
1
61#ifndef OPENSWMMVIS_MESH_PSLGMINSIZE_H
62#define OPENSWMMVIS_MESH_PSLGMINSIZE_H
63
64#include "mesh/meshgenerator.h"
65
66#include <QPointF>
67#include <QPolygonF>
68#include <QString>
69#include <QVector>
70
71#include <functional>
72
73namespace mesh {
74namespace pslg {
75
84{
88 double minCellSize = 0.0;
89
90 double weldRadius = -1.0;
91 double minSegmentLen = -1.0;
92 double maxDeviation = -1.0;
93
97 double trimAngleDeg = 30.0;
98
103 bool trimAtTaggedNodes = false;
104
108 bool dropSubScaleHoles = true;
109
115
120 bool ringsReadOnly = false;
121
138 bool allowIdentityMerge = false;
139
142 double identityMergeRadius = -1.0;
143
145 int maxResiduals = 200;
146
148 void resolveDefaults();
149
150 [[nodiscard]] bool enabled() const { return minCellSize > 0.0; }
151
154 [[nodiscard]] double minTriangleArea() const;
155
170 [[nodiscard]] double refinementAreaCap(double uniformCap) const;
171};
172
182
183[[nodiscard]] QString violationCauseName(ViolationCause c);
184
187{
188 QPointF xy;
189 double lfs = 0.0;
191 QString tagA;
192 QString tagB;
193};
194
199{
212
219
224
230
231 double maxDisplacement = 0.0;
232 double domainAreaBefore = 0.0;
233 double domainAreaAfter = 0.0;
234 double predictedMinLfs = 0.0;
235
243
247
248 QVector<Violation> residuals;
249
251 [[nodiscard]] QString summary() const;
252};
253
266[[nodiscard]] QVector<Violation> analyseLocalFeatureSize(
267 const QVector<QPolygonF> &domains,
268 const QVector<QVector<QPointF>> &holeRings,
269 const QVector<ConstraintSegment> &segs,
270 const QVector<SteinerPoint> &pts,
271 double h,
272 int maxReported = 200);
273
291bool conditionMinSize(QVector<QPolygonF> *domains,
292 QVector<QVector<QPointF>> *holeRings,
293 QVector<ConstraintSegment> *segs,
294 QVector<SteinerPoint> *pts,
295 const MinSizePolicy &policy,
296 ConditionReport *report,
297 const std::function<bool()> &isCancelled = {});
298
299} // namespace pslg
300} // namespace mesh
301
302#endif // OPENSWMMVIS_MESH_PSLGMINSIZE_H
int h
Definition mesh2dresultsexport.cpp:387
QVector< QPointF > pts
Definition meshpatch.cpp:62
ViolationCause
Definition pslgminsize.h:175
@ CloseFeatures
Two non-incident features within h of each other.
@ IdentityMerged
Two coupling identities were merged (opt-in only).
@ ShortSegment
A constrained edge shorter than h.
@ SubScaleRing
A ring (hole or domain notch) narrower than h.
@ SmallAngle
Two segments meeting at an angle that forces apex slivers.
QVector< Violation > analyseLocalFeatureSize(const QVector< QPolygonF > &domains, const QVector< QVector< QPointF > > &holeRings, const QVector< ConstraintSegment > &segs, const QVector< SteinerPoint > &pts, double h, int maxReported=200)
Analyse the PSLG's local feature size. Read-only.
Definition pslgminsize.cpp:766
bool conditionMinSize(QVector< QPolygonF > *domains, QVector< QVector< QPointF > > *holeRings, QVector< ConstraintSegment > *segs, QVector< SteinerPoint > *pts, const MinSizePolicy &policy, ConditionReport *report, const std::function< bool()> &isCancelled={})
Condition the PSLG so it can support cells of size policy.minCellSize.
Definition pslgminsize.cpp:910
QString violationCauseName(ViolationCause c)
Definition pslgminsize.cpp:68
Definition meshcommands.h:302
Definition pslgminsize.h:199
int pathsShortened
Polylines that lost vertices to resampling.
Definition pslgminsize.h:203
double domainAreaBefore
Definition pslgminsize.h:232
int identitiesMerged
Definition pslgminsize.h:223
int holesDropped
Definition pslgminsize.h:205
int segmentsSplit
Vertex-edge fix-ups (ยง4 stage 3c).
Definition pslgminsize.h:201
int crossingsBefore
Definition pslgminsize.h:208
int crossingsAfter
Definition pslgminsize.h:209
double maxDisplacement
Definition pslgminsize.h:231
bool conditioningAbandoned
Definition pslgminsize.h:242
int crossingsRepaired
Definition pslgminsize.h:210
int shortEdgesKept
Sub-minLen edges retained by the deviation cap.
Definition pslgminsize.h:204
int pathsCollapsed
Definition pslgminsize.h:202
double predictedMinLfs
Worst surviving feature scale.
Definition pslgminsize.h:234
bool weldRadiusDominatesDomain
Definition pslgminsize.h:228
int duplicateSegments
Definition pslgminsize.h:218
QString summary() const
Definition pslgminsize.cpp:81
QString abandonReason
Definition pslgminsize.h:246
int cornersSkipped
Sharp corners left alone (policy or degree > 2).
Definition pslgminsize.h:207
int iterationsUsed
Definition pslgminsize.h:211
int verticesWelded
Definition pslgminsize.h:200
double domainNarrowestExtent
Definition pslgminsize.h:229
int cornersTrimmed
Definition pslgminsize.h:206
double domainAreaAfter
Definition pslgminsize.h:233
QVector< Violation > residuals
Capped at MinSizePolicy::maxResiduals.
Definition pslgminsize.h:248
Policy for minimum-feature-size conditioning.
Definition pslgminsize.h:84
bool allowIdentityMerge
Let two coupling identities merge into one another.
Definition pslgminsize.h:138
double refinementAreaCap(double uniformCap) const
The value RefineHook::targetAreaAt should report, given the user's uniform uniformCap (GenerationOpti...
Definition pslgminsize.cpp:61
int maxResiduals
Cap on ConditionReport::residuals.
Definition pslgminsize.h:145
bool collapseSubScalePaths
Definition pslgminsize.h:114
double identityMergeRadius
Definition pslgminsize.h:142
double weldRadius
<0 โ†’ h. Features closer than this merge.
Definition pslgminsize.h:90
bool ringsReadOnly
Definition pslgminsize.h:120
double trimAngleDeg
Definition pslgminsize.h:97
double maxDeviation
<0 โ†’ h/2. Cap on shape change from resampling.
Definition pslgminsize.h:92
double minSegmentLen
<0 โ†’ h. Shortest permitted constrained edge.
Definition pslgminsize.h:91
void resolveDefaults()
Definition pslgminsize.cpp:41
double minCellSize
Definition pslgminsize.h:88
int maxIterations
Weld / fix-up / crossing-repair fixed-point cap.
Definition pslgminsize.h:144
bool dropSubScaleHoles
Definition pslgminsize.h:108
double minTriangleArea() const
Definition pslgminsize.cpp:54
bool enabled() const
Definition pslgminsize.h:150
bool trimAtTaggedNodes
Definition pslgminsize.h:103
Definition pslgminsize.h:187
double lfs
Offending length scale (map units).
Definition pslgminsize.h:189
QString tagA
Tag of the feature involved, when known.
Definition pslgminsize.h:191
ViolationCause cause
Definition pslgminsize.h:190
QPointF xy
Definition pslgminsize.h:188
QString tagB
Tag of the second feature, for pairwise causes.
Definition pslgminsize.h:192