![]() |
SWMMVis
6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
|
#include "mesh/meshgenerator.h"#include "mesh/meshcellgeom.h"#include "mesh/meshcrossfield.h"#include "mesh/meshquadpoints.h"#include "mesh/meshquadquality.h"#include "mesh/meshsubmap.h"#include <QDebug>#include <QHash>#include <QRectF>#include <QSet>#include <QStringList>#include <QtMath>#include <algorithm>#include <cmath>#include <cstdlib>#include <cstring>#include <functional>#include "triangle.h"Namespaces | |
| namespace | mesh |
Macros | |
| #define | TRILIBRARY |
Slice AU — Triangle wrapper. Builds the input triangulateio, runs Shewchuk's triangulate(), and re-packs the output into mesh::MeshResult. Tag round-trip is via Triangle's marker (point/segment) and region-attribute (triangle) channels.
Quad regions (workplans/QUAD_MESHING_REDESIGN_PLAN_2026-09-06.md §3.3, §4) ride on the same single CDT: Mapped / Submapped rings become internal patches (hole + stitched quads, exactly like addPatch), Free / TrianglesOnly rings become a locked constraint loop with a RegionMarker whose attribute is -(regionIndex+1); Free regions additionally receive a cross-field aligned lattice of Steiner points, no Triangle area refinement inside (the -u hook returns "unconstrained" there), and after Triangle their triangles are paired into quads (template lookup + blossom), cleaned up and smoothed. Without quad regions the pipeline is unchanged.
| #define TRILIBRARY |
| QRectF bbox |
| int droppedSteiners = 0 |
| bool gradeFromField = false |
No explicit QuadRegion::spacing was given, so h came from the size function and the lattice should follow it point by point rather than hold the single centroid sample.
| double h = 0.0 |
| QVector<QPolygonF> holesR |
normalizeRingCCW of every r.holes ring.
| int index = -1 |
Position in m_quadRegions / m_quadReports.
| bool isBackground = false |
Ring is a domain outline already present in the PSLG: emit no ring segments for it (QUAD_EVERYWHERE_PLAN_2026-09-07.md §3.1).
| QuadRegionMode mode = QuadRegionMode::Free |
Resolved mode.
| QSet<int> movable |
Generated lattice vertices (new pushPoint indices).
| QPolygonF ring |
normalizeRingCCW(r.ring).
| QVector<int> ringInputIdx |
pushPoint index of every ringR vertex.
| QPolygonF ringR |
resampleRing(ring, h) — Free / TrianglesOnly.
| QVector<int> seedInputIdx |
| QSet<int> seedSet |
| QVector<QPointF> seedXY |
Fixed interior seeds (junction Steiners, segment vertices).
| QString tag |
r.tag or inherited from a dropped RegionMarker.
| QVector<QuadTemplate> templates |
Input (== Triangle output) vertex ids.