17#ifndef OPENSWMMVIS_MESH_MESHGENERATOR_H
18#define OPENSWMMVIS_MESH_MESHGENERATOR_H
139 void setDomain(
const QPolygonF &outerBoundary);
146 void setDomains(
const QVector<QPolygonF> &outerBoundaries);
150 void addDomain(
const QPolygonF &outerBoundary);
158 void addHole(
const QPointF &interiorPointInsideHole);
180 [[nodiscard]]
const QVector<QuadRegionReport> &
quadRegionReports()
const {
return m_quadReports; }
207 QVector<QPolygonF> m_domains;
208 QVector<ConstraintSegment> m_segments;
209 QVector<SteinerPoint> m_steiners;
210 QVector<QPointF> m_holes;
211 QVector<RegionMarker> m_regions;
212 QVector<PatchMesh> m_patches;
213 QVector<QuadRegion> m_quadRegions;
214 mutable QVector<QuadRegionReport> m_quadReports;
221 mutable QHash<int, QString> m_vertexTagByMarker;
222 mutable QHash<int, QString> m_edgeTagByMarker;
223 mutable QHash<int, QString> m_triangleTagByRegionId;
Generate a 2D triangular mesh.
Definition meshgenerator.h:134
void addRegion(const RegionMarker ®ion)
Definition meshgenerator.cpp:79
QString tagForEdgeMarker(int marker) const
Translate an output edge's marker back to a tag string.
Definition meshgenerator.cpp:89
void addPatch(const PatchMesh &patch)
Stitch a structured quad patch (mesh/meshpatch.h) into the domain. Its boundary segments become PSLG ...
Definition meshgenerator.cpp:80
void addHole(const QPointF &interiorPointInsideHole)
Definition meshgenerator.cpp:78
void addDomain(const QPolygonF &outerBoundary)
Append one more closed boundary polygon to the current domain set. Equivalent to building up via setD...
Definition meshgenerator.cpp:68
QString tagForVertexMarker(int marker) const
Translate an output point's marker back to a tag string. Used by clients that don't want to maintain ...
Definition meshgenerator.cpp:85
void setRefineHook(const RefineHook &hook)
Install cancellation / progress / graded-sizing callbacks.
Definition meshgenerator.cpp:83
MeshResult generate() const
Run Triangle. Returns a result with ok=false + errorMsg on failure.
Definition meshgenerator.cpp:296
const QVector< QuadRegionReport > & quadRegionReports() const
One report per addQuadRegion() call, filled by generate().
Definition meshgenerator.h:180
void setDomains(const QVector< QPolygonF > &outerBoundaries)
Replace the domain with multiple disjoint closed polygons. Each polygon becomes its own boundary ring...
Definition meshgenerator.cpp:61
void addSteinerPoint(const SteinerPoint &pt)
Definition meshgenerator.cpp:73
void addConstraintSegment(const ConstraintSegment &seg)
Definition meshgenerator.cpp:72
void setOptions(const GenerationOptions &opts)
Definition meshgenerator.cpp:82
void setDomain(const QPolygonF &outerBoundary)
Replace the domain with a single closed boundary polygon.
Definition meshgenerator.cpp:55
void addQuadRegion(const QuadRegion ®ion)
Register a PSLG quad region (mesh/meshquadregion.h). Resolved in generate(): the ring becomes a const...
Definition meshgenerator.cpp:81
void reserveSteinerPoints(qsizetype additional)
Pre-reserve capacity for additional upcoming addSteinerPoint calls. Avoids the transient ~2x peak of ...
Definition meshgenerator.cpp:74
Definition meshcommands.h:302
QuadRegionMode
Definition meshquadregion.h:30
@ Auto
classifyQuadRegion() decides: Mapped → Submapped → Free.
@ Free
Cross-field aligned lattice + template pairing (quad-dominant).
int marker
Definition pslgminsize.cpp:153
A polyline that must appear as constrained edges in the mesh.
Definition meshgenerator.h:38
int marker
Triangle marker value; preserved on output edges.
Definition meshgenerator.h:40
QVector< QPointF > path
>= 2 points; consecutive pairs become Triangle segments.
Definition meshgenerator.h:39
QString tag
Resolved later via the marker→tag lookup the caller maintains.
Definition meshgenerator.h:41
Quality knobs surfaced to the user dialog.
Definition meshgenerator.h:68
bool mergeTrianglePairs
Definition meshgenerator.h:87
QString customSwitchString
If non-empty, overrides everything above. Advanced.
Definition meshgenerator.h:80
bool allowSteiner
false = -YY (no Steiner points on boundary).
Definition meshgenerator.h:76
int maxSteinerPoints
-SN cap; -1 = unlimited.
Definition meshgenerator.h:78
double quadRegionDefaultSpacing
Definition meshgenerator.h:104
bool conformingDelaunay
-D switch.
Definition meshgenerator.h:77
double maxArea
Definition meshgenerator.h:69
QuadCleanupOptions quadCleanup
Definition meshgenerator.h:99
double patchSnapEps
Definition meshgenerator.h:92
double minAngle
Definition meshgenerator.h:72
bool quiet
-Q (suppress Triangle's stderr).
Definition meshgenerator.h:79
QuadQualityBounds quadRegionBounds
Definition meshgenerator.h:97
QuadMergeOptions quadMerge
Definition meshgenerator.h:88
Result of MeshGenerator::generate.
Definition meshresult.h:116
A generated patch in local indices. Quads are emitted CCW.
Definition meshpatch.h:58
Definition meshquadcleanup.h:45
Acceptance thresholds for a merged quad.
Definition meshquadmerge.h:32
Acceptance bounds shared by pairing, cleanup, smoothing and the legacy tri-pair merge....
Definition meshquadquality.h:33
Definition meshquadregion.h:39
Per-region outcome of generate() (MeshGenerator::quadRegionReports()).
Definition meshgenerator.h:109
double spacing
Definition meshgenerator.h:113
int generatedPoints
Definition meshgenerator.h:116
QString message
Fallback reason / validation error; empty when clean.
Definition meshgenerator.h:119
int gapQuads
Definition meshgenerator.h:115
double minScaledJacobian
Definition meshgenerator.h:118
int verticesMoved
Definition meshgenerator.h:117
double medianRectangularity
Definition meshgenerator.h:118
int index
Definition meshgenerator.h:110
int doubletsRemoved
Definition meshgenerator.h:117
QuadRegionMode requested
Definition meshgenerator.h:111
int triangles
Cells inside the region on exit.
Definition meshgenerator.h:114
int quads
Definition meshgenerator.h:114
int droppedSteiners
Free: lattice points; marker-0 Steiners removed inside.
Definition meshgenerator.h:116
int templateQuads
Definition meshgenerator.h:115
int diagonalSwaps
Definition meshgenerator.h:117
QuadRegionMode resolved
After Auto classification / fallbacks.
Definition meshgenerator.h:112
Callbacks consulted by Triangle's -u user test.
Definition trirefinehook.h:61
A region attribute — an interior seed point with a value Triangle propagates into the triangle-attrib...
Definition meshgenerator.h:59
QString tag
Convenience.
Definition meshgenerator.h:63
double maxArea
-1 = use global max area.
Definition meshgenerator.h:62
QPointF xy
Seed point inside the region (must be inside a sub-polygon).
Definition meshgenerator.h:60
double attribute
Region id; resolved via id→tag map.
Definition meshgenerator.h:61
A point that must appear as a vertex in the output mesh.
Definition meshgenerator.h:46
bool hasZ
If true, z is exact — skip DTM re-sampling in post-mesh step.
Definition meshgenerator.h:51
QString tag
Convenience copy (caller can resolve via marker, but stash here too).
Definition meshgenerator.h:49
int marker
Carries a tag id; resolved via marker→tag map.
Definition meshgenerator.h:48
QPointF xy
Definition meshgenerator.h:47
double z
Pre-sampled elevation when hasZ is true (e.g. from DTM thinner).
Definition meshgenerator.h:50