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
qtnative.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2#pragma once
3#include "mesh/cellplanner.h"
6#include "mesh/sizefield.h"
7#include "mesh/quadblocks.h"
11#include "meshkit/blocks.hpp"
12#include "meshkit/sizefield.hpp"
14{
15namespace n = meshkit::plan;
16inline meshkit::Point2 native(QPointF p)
17{
18 return {p.x(), p.y()};
19}
20inline QPointF qt(meshkit::Point2 p)
21{
22 return {p.x(), p.y()};
23}
24inline meshkit::Box2 native(QRectF b)
25{
26 return {{b.left(), b.top()}, {b.right(), b.bottom()}};
27}
28inline QRectF qt(meshkit::Box2 b)
29{
30 return QRectF(QPointF(b.left(), b.top()), QPointF(b.right(), b.bottom()));
31}
32inline n::Text native(const QString &s)
33{
34 return s.toStdString();
35}
36inline QString qt(const n::Text &s)
37{
38 return QString::fromStdString(s);
39}
40template <class T> T native(T v)
41{
42 return v;
43}
44template <class T> T qt(T v)
45{
46 return v;
47}
48inline n::QuadRegion native(const QuadRegion &);
49inline QuadRegion qt(const n::QuadRegion &);
52inline n::SweptPatch native(const SweptPatch &);
53inline SweptPatch qt(const n::SweptPatch &);
55inline BankPairPatch qt(const n::BankPairPatch &);
56inline n::PatchLine native(const PatchLine &);
57inline PatchLine qt(const n::PatchLine &);
58inline n::PatchMesh native(const PatchMesh &);
59inline PatchMesh qt(const n::PatchMesh &);
62inline n::SteinerPoint native(const SteinerPoint &);
63inline SteinerPoint qt(const n::SteinerPoint &);
83inline PatchDecision qt(const n::PatchDecision &);
92inline n::QuadPlan native(const QuadPlan &);
93inline QuadPlan qt(const n::QuadPlan &);
95inline QuadBlockGrid qt(const n::QuadBlockGrid &);
99{
100 n::MeshTriangle out;
101 out.v0 = v.v0;
102 out.v1 = v.v1;
103 out.v2 = v.v2;
104 out.v3 = v.v3;
105 out.tag = native(v.tag);
106 return out;
107}
109{
110 MeshTriangle out;
111 out.v0 = v.v0;
112 out.v1 = v.v1;
113 out.v2 = v.v2;
114 out.v3 = v.v3;
115 out.tag = qt(v.tag);
116 return out;
117}
118inline n::Polygon native(const QPolygonF &);
119inline QPolygonF qt(const n::Polygon &);
120template <class T> auto native(const QVector<T> &v)
121{
122 n::Vector<decltype(native(T{}))> out;
123 out.reserve(v.size());
124 for (int i = 0; i < v.size(); ++i) {
125 const T value = v[i];
126 out.append(native(value));
127 }
128 return out;
129}
130template <class T> auto qt(const n::Vector<T> &v)
131{
132 QVector<decltype(qt(T{}))> out;
133 out.reserve(v.size());
134 for (int i = 0; i < v.size(); ++i) {
135 const T value = v[i];
136 out.append(qt(value));
137 }
138 return out;
139}
140inline n::Polygon native(const QPolygonF &v)
141{
142 n::Polygon out;
143 out.reserve(v.size());
144 for (auto p : v)
145 out.append(native(p));
146 return out;
147}
148inline QPolygonF qt(const n::Polygon &v)
149{
150 return QPolygonF(qt(static_cast<const n::Vector<meshkit::Point2> &>(v)));
151}
153{
154 return static_cast<n::QuadRegionMode>(v);
155}
157{
158 return static_cast<QuadRegionMode>(v);
159}
161{
162 return static_cast<n::PatchDisposition>(v);
163}
165{
166 return static_cast<PatchDisposition>(v);
167}
168inline n::ConstraintSimplificationPolicy::Mode native(ConstraintSimplificationPolicy::Mode v)
169{
170 return static_cast<n::ConstraintSimplificationPolicy::Mode>(v);
171}
172inline ConstraintSimplificationPolicy::Mode qt(n::ConstraintSimplificationPolicy::Mode v)
173{
174 return static_cast<ConstraintSimplificationPolicy::Mode>(v);
175}
176inline n::SimplificationFeature::Role native(SimplificationFeature::Role v)
177{
178 return static_cast<n::SimplificationFeature::Role>(v);
179}
180inline SimplificationFeature::Role qt(n::SimplificationFeature::Role v)
181{
182 return static_cast<SimplificationFeature::Role>(v);
183}
185{
186 n::QuadRegion out;
187 out.ring = native(v.ring);
188 out.holes = native(v.holes);
190 out.mode = native(v.mode);
193 out.spacing = native(v.spacing);
195 out.hAlong = native(v.hAlong);
196 out.hAcross = native(v.hAcross);
198 out.aspectMax = native(v.aspectMax);
202 out.corners = native(v.corners);
203 out.tag = native(v.tag);
204 return out;
205}
207{
208 QuadRegion out;
209 out.ring = qt(v.ring);
210 out.holes = qt(v.holes);
212 out.mode = qt(v.mode);
215 out.spacing = qt(v.spacing);
217 out.hAlong = qt(v.hAlong);
218 out.hAcross = qt(v.hAcross);
220 out.aspectMax = qt(v.aspectMax);
223 out.alignGuide = qt(v.alignGuide);
224 out.corners = qt(v.corners);
225 out.tag = qt(v.tag);
226 return out;
227}
229{
231 out.corners = native(v.corners);
232 out.n = native(v.n);
233 out.m = native(v.m);
234 out.tag = native(v.tag);
235 return out;
236}
238{
239 StructuredPatch out;
240 out.corners = qt(v.corners);
241 out.n = qt(v.n);
242 out.m = qt(v.m);
243 out.tag = qt(v.tag);
244 return out;
245}
247{
248 n::SweptPatch out;
250 out.width = native(v.width);
251 out.across = native(v.across);
252 out.along = native(v.along);
253 out.tag = native(v.tag);
254 return out;
255}
257{
258 SweptPatch out;
259 out.centreline = qt(v.centreline);
260 out.width = qt(v.width);
261 out.across = qt(v.across);
262 out.along = qt(v.along);
263 out.tag = qt(v.tag);
264 return out;
265}
267{
269 out.bankA = native(v.bankA);
270 out.bankB = native(v.bankB);
271 out.across = native(v.across);
272 out.along = native(v.along);
273 out.tag = native(v.tag);
274 return out;
275}
277{
278 BankPairPatch out;
279 out.bankA = qt(v.bankA);
280 out.bankB = qt(v.bankB);
281 out.across = qt(v.across);
282 out.along = qt(v.along);
283 out.tag = qt(v.tag);
284 return out;
285}
287{
288 n::PatchLine out;
289 out.path = native(v.path);
290 out.marker = native(v.marker);
291 out.tag = native(v.tag);
292 return out;
293}
294inline PatchLine qt(const n::PatchLine &v)
295{
296 PatchLine out;
297 out.path = qt(v.path);
298 out.marker = qt(v.marker);
299 out.tag = qt(v.tag);
300 return out;
301}
303{
304 n::PatchMesh out;
305 out.xy = native(v.xy);
306 out.quads = native(v.quads);
308 out.tag = native(v.tag);
309 out.lines = native(v.lines);
310 return out;
311}
312inline PatchMesh qt(const n::PatchMesh &v)
313{
314 PatchMesh out;
315 out.xy = qt(v.xy);
316 out.quads = qt(v.quads);
318 out.tag = qt(v.tag);
319 out.lines = qt(v.lines);
320 return out;
321}
323{
325 out.path = native(v.path);
326 out.marker = native(v.marker);
327 out.tag = native(v.tag);
329 return out;
330}
332{
334 out.path = qt(v.path);
335 out.marker = qt(v.marker);
336 out.tag = qt(v.tag);
337 out.stripWidth = qt(v.stripWidth);
338 return out;
339}
341{
342 n::SteinerPoint out;
343 out.xy = native(v.xy);
344 out.marker = native(v.marker);
345 out.tag = native(v.tag);
346 out.z = native(v.z);
347 out.hasZ = native(v.hasZ);
348 return out;
349}
351{
352 SteinerPoint out;
353 out.xy = qt(v.xy);
354 out.marker = qt(v.marker);
355 out.tag = qt(v.tag);
356 out.z = qt(v.z);
357 out.hasZ = qt(v.hasZ);
358 return out;
359}
407{
409 out.id = native(v.id);
410 out.xy = native(v.xy);
411 out.z = native(v.z);
412 out.fixed = native(v.fixed);
413 out.closed = native(v.closed);
414 out.policy = native(v.policy);
415 out.role = native(v.role);
416 out.marker = native(v.marker);
418 out.label = native(v.label);
419 return out;
420}
422{
424 out.id = qt(v.id);
425 out.xy = qt(v.xy);
426 out.z = qt(v.z);
427 out.fixed = qt(v.fixed);
428 out.closed = qt(v.closed);
429 out.policy = qt(v.policy);
430 out.role = qt(v.role);
431 out.marker = qt(v.marker);
433 out.label = qt(v.label);
434 return out;
435}
451{
453 out.id = qt(v.id);
454 out.removed = qt(v.removed);
458 out.areaChange = qt(v.areaChange);
460 out.rolledBack = qt(v.rolledBack);
462 return out;
463}
485{
487 out.ok = native(v.ok);
488 out.cancelled = native(v.cancelled);
489 out.error = native(v.error);
490 out.features = native(v.features);
491 out.changes = native(v.changes);
494 out.workUsed = native(v.workUsed);
495 return out;
496}
498{
500 out.ok = qt(v.ok);
501 out.cancelled = qt(v.cancelled);
502 out.error = qt(v.error);
503 out.features = qt(v.features);
504 out.changes = qt(v.changes);
507 out.workUsed = qt(v.workUsed);
508 return out;
509}
531{
533 out.featureId = native(v.featureId);
534 out.message = native(v.message);
535 out.segment = native(v.segment);
536 return out;
537}
539{
541 out.featureId = qt(v.featureId);
542 out.message = qt(v.message);
543 out.segment = qt(v.segment);
544 return out;
545}
567{
569 out.ok = qt(v.ok);
570 out.complete = qt(v.complete);
571 out.cancelled = qt(v.cancelled);
573 out.error = qt(v.error);
577 out.violations = qt(v.violations);
578 out.workUsed = qt(v.workUsed);
583 out.examples = qt(v.examples);
584 return out;
585}
587{
589 out.source = native(v.source);
590 out.reason = native(v.reason);
591 out.region = native(v.region);
592 out.required = native(v.required);
594 out.cells = native(v.cells);
596 return out;
597}
599{
600 PatchDecision out;
601 out.source = qt(v.source);
602 out.reason = qt(v.reason);
603 out.region = qt(v.region);
604 out.required = qt(v.required);
605 out.disposition = qt(v.disposition);
606 out.cells = qt(v.cells);
608 return out;
609}
611{
613 out.ok = native(v.ok);
615 out.cancelled = native(v.cancelled);
616 out.reason = native(v.reason);
617 return out;
618}
620{
621 PatchAssessment out;
622 out.ok = qt(v.ok);
623 out.repairable = qt(v.repairable);
624 out.cancelled = qt(v.cancelled);
625 out.reason = qt(v.reason);
626 return out;
627}
629{
631 out.first = native(v.first);
632 out.second = native(v.second);
633 out.firstSize = native(v.firstSize);
635 return out;
636}
638{
640 out.first = qt(v.first);
641 out.second = qt(v.second);
642 out.firstSize = qt(v.firstSize);
643 out.secondSize = qt(v.secondSize);
644 return out;
645}
647{
649 out.ok = native(v.ok);
650 out.cancelled = native(v.cancelled);
651 out.error = native(v.error);
655 out.examples = native(v.examples);
656 return out;
657}
659{
661 out.ok = qt(v.ok);
662 out.cancelled = qt(v.cancelled);
663 out.error = qt(v.error);
664 out.sharedFaces = qt(v.sharedFaces);
665 out.violations = qt(v.violations);
667 out.examples = qt(v.examples);
668 return out;
669}
671{
673 out.domains = native(v.domains);
674 out.holes = native(v.holes);
675 out.lines = native(v.lines);
676 out.pins = native(v.pins);
678 return out;
679}
681{
683 out.domains = qt(v.domains);
684 out.holes = qt(v.holes);
685 out.lines = qt(v.lines);
686 out.pins = qt(v.pins);
688 return out;
689}
691{
692 n::QuadPlan out;
693 out.ok = native(v.ok);
694 out.cancelled = native(v.cancelled);
696 out.error = native(v.error);
697 out.patches = native(v.patches);
699 out.decisions = native(v.decisions);
701 out.workUsed = native(v.workUsed);
703 return out;
704}
705inline QuadPlan qt(const n::QuadPlan &v)
706{
707 QuadPlan out;
708 out.ok = qt(v.ok);
709 out.cancelled = qt(v.cancelled);
711 out.error = qt(v.error);
712 out.patches = qt(v.patches);
714 out.decisions = qt(v.decisions);
715 out.sharedSides = qt(v.sharedSides);
716 out.workUsed = qt(v.workUsed);
718 return out;
719}
721{
723 out.origin = native(v.origin);
724 out.pitch = native(v.pitch);
725 out.cols = native(v.cols);
726 out.rows = native(v.rows);
727 out.h = native(v.h);
728 return out;
729}
731{
732 QuadBlockGrid out;
733 out.origin = qt(v.origin);
734 out.pitch = qt(v.pitch);
735 out.cols = qt(v.cols);
736 out.rows = qt(v.rows);
737 out.h = qt(v.h);
738 return out;
739}
741{
744 out.bandRatio = native(v.bandRatio);
746 out.maxBlocks = native(v.maxBlocks);
747 return out;
748}
750{
752 out.minSpacing = qt(v.minSpacing);
753 out.bandRatio = qt(v.bandRatio);
755 out.maxBlocks = qt(v.maxBlocks);
756 return out;
757}
759{
760 n::MeshResult out;
761 out.ok = m.ok;
762 out.errorMsg = native(m.errorMsg);
763 out.vertices.borrow(&m.vertices, m.vertices.size(), [](const void *p, std::size_t i) {
764 const auto &v = (*static_cast<const QVector<MeshVertex> *>(p))[i];
765 return n::MeshVertex{native(v.xy), v.z};
766 });
767 out.triangles.borrow(&m.triangles, m.triangles.size(), [](const void *p, std::size_t i) {
768 const auto &v = (*static_cast<const QVector<MeshTriangle> *>(p))[i];
770 c.v0 = v.v0;
771 c.v1 = v.v1;
772 c.v2 = v.v2;
773 c.v3 = v.v3;
774 return c;
775 });
776 out.boundaryEdges.borrow(&m.boundaryEdges, m.boundaryEdges.size(),
777 [](const void *p, std::size_t i) {
778 const auto &v = (*static_cast<const QVector<MeshEdge> *>(p))[i];
779 n::MeshEdge e;
780 e.v0 = v.v0;
781 e.v1 = v.v1;
782 e.marker = v.marker;
783 return e;
784 });
785 return out;
786}
788{
791 out.nearSize = o.nearSize;
792 out.gradation = o.gradation;
793 out.areaFloor = o.areaFloor;
795 out.maxSize = o.maxSize;
797 out.steps = native(o.steps);
798 for (auto r : o.regions)
799 out.regions.append({native(r.ring), r.h});
800 for (auto r : o.terrainRegions)
801 out.terrainRegions.append({native(r.ring), r.h});
802 return out;
803}
805{
806 n::PatchLimits out;
807 out.minimumEdge = o.minimumEdge;
810 out.alongSize = o.alongSize;
811 out.acrossSize = o.acrossSize;
814 out.cancelled = o.cancelled;
815 out.elevationAt = o.elevationAt;
816 if (o.maximumSize)
817 out.maximumSize = [f = o.maximumSize](const meshkit::Box2 &b) { return f(qt(b)); };
820 [f = o.terrainToleranceForFootprint](const meshkit::Box2 &b) { return f(qt(b)); };
821 if (o.terrainBound)
822 out.terrainBound = [f = o.terrainBound](const meshkit::Point2 *p, const double *z) {
823 QPointF points[3] = {qt(p[0]), qt(p[1]), qt(p[2])};
824 return f(points, z);
825 };
826 return out;
827}
829{
831 out.allowQuads = o.allowQuads;
832 out.defaultSize = o.defaultSize;
833 out.limits = native(o.limits);
838 out.workBudget = o.workBudget;
839 if (o.excluded)
840 out.excluded = [f = o.excluded](const n::Polygon &p) { return f(qt(p)); };
841 return out;
842}
843}
Definition geometry.hpp:59
Definition geometry.hpp:11
constexpr double x() const noexcept
Definition geometry.hpp:17
Definition storage.hpp:18
void append(const Vector &v)
Definition storage.hpp:37
std::ptrdiff_t size() const noexcept
Definition storage.hpp:49
Definition planmodel.hpp:49
Definition planmodel.hpp:14
size_t i
Definition contourjob.cpp:30
double s
Scene px per model length unit.
Definition inletdrawingview.cpp:95
ArrowPlacement p
Definition linesymbollayer.cpp:29
MaskMode m
Definition maskspec.cpp:21
Definition qtnative.h:14
meshkit::Point2 native(QPointF p)
Definition qtnative.h:16
QPointF qt(meshkit::Point2 p)
Definition qtnative.h:20
QuadRegionMode
Definition meshquadregion.h:37
PatchDisposition
Definition cellplanner.h:9
Definition blocks.hpp:25
QuadRegionMode
Definition regions.hpp:31
PatchDisposition
Definition planning.hpp:10
Automatic open-area quad blocks (workplans/MESH_REGIONAL_TRIQUAD_PLAN_2026-10-03.md,...
double value
Definition rasterfluxintegration.cpp:27
Graded element sizing for Delaunay refinement (MESH_MINSIZE_ENFORCEMENT_V2_AND_GRADING_PLAN_2026-09-0...
Two open bank polylines with independently supplied directions. Endpoints are paired by minimum total...
Definition meshpatch.h:64
QVector< QPointF > bankA
Definition meshpatch.h:65
QVector< QPointF > bankB
Definition meshpatch.h:65
int across
Definition meshpatch.h:66
QString tag
Definition meshpatch.h:68
double along
Definition meshpatch.h:67
Definition constraintaudit.h:14
QString featureId
Definition constraintaudit.h:15
int segment
Definition constraintaudit.h:16
QString message
Definition constraintaudit.h:15
Definition constraintaudit.h:7
std::function< bool()> cancelled
Definition constraintaudit.h:9
QVector< QPointF > protectedPoints
Definition constraintaudit.h:8
quint64 workBudget
Definition constraintaudit.h:10
int maximumExamples
Definition constraintaudit.h:12
quint64 maximumWorkspaceBytes
Definition constraintaudit.h:11
Definition constraintaudit.h:18
double coordinateRoundoff
Definition constraintaudit.h:24
quint64 violations
Definition constraintaudit.h:22
quint64 segmentsChecked
Definition constraintaudit.h:21
QString error
Definition constraintaudit.h:20
bool ok
Definition constraintaudit.h:19
quint64 featuresChecked
Definition constraintaudit.h:21
double maximumXYDeviation
Definition constraintaudit.h:23
double maximumZDeviation
Definition constraintaudit.h:23
bool cancelled
Definition constraintaudit.h:19
quint64 workUsed
Definition constraintaudit.h:22
bool complete
Definition constraintaudit.h:19
double maximumAreaChange
Definition constraintaudit.h:23
QVector< ConstraintAuditExample > examples
Definition constraintaudit.h:25
quint64 cellsChecked
Definition constraintaudit.h:21
bool resourceLimited
Definition constraintaudit.h:19
Definition constraintsimplifier.h:24
int mode
Definition constraintsimplifier.h:25
std::optional< double > maxTurnDegrees
Definition constraintsimplifier.h:26
std::optional< double > minimumClearance
Definition constraintsimplifier.h:27
std::optional< double > maxAreaChangeFraction
Definition constraintsimplifier.h:27
std::optional< double > maxZDeviation
Definition constraintsimplifier.h:26
std::optional< double > maxDeviation
Definition constraintsimplifier.h:26
A polyline that must appear as constrained edges in the mesh.
Definition meshgenerator.h:53
double stripWidth
Definition meshgenerator.h:62
int marker
Preserved on output edges.
Definition meshgenerator.h:55
QVector< QPointF > path
>= 2 points; consecutive pairs become constrained edges.
Definition meshgenerator.h:54
QString tag
Resolved later via the marker→tag lookup the caller maintains.
Definition meshgenerator.h:56
Definition constraintsimplifier.h:51
std::function< bool()> cancelled
Definition constraintsimplifier.h:53
quint64 maximumWorkspaceBytes
Definition constraintsimplifier.h:59
QVector< QPointF > protectedPoints
Definition constraintsimplifier.h:52
quint64 workBudget
Definition constraintsimplifier.h:56
bool canonicalizeSharedEdges
Definition constraintsimplifier.h:57
Definition constraintsimplifier.h:11
double maxDeviation
Definition constraintsimplifier.h:14
Mode mode
Definition constraintsimplifier.h:13
double minimumClearance
Definition constraintsimplifier.h:19
double maxTurnDegrees
Definition constraintsimplifier.h:16
double maxAreaChange
Definition constraintsimplifier.h:18
Mode
Definition constraintsimplifier.h:12
double maxAreaChangeFraction
Definition constraintsimplifier.h:17
double maxZDeviation
Definition constraintsimplifier.h:15
Definition constraintsimplifier.h:61
bool ok
Definition constraintsimplifier.h:62
quint64 sharedChains
Definition constraintsimplifier.h:66
quint64 sharedSegments
Definition constraintsimplifier.h:66
bool cancelled
Definition constraintsimplifier.h:62
QVector< SimplificationFeature > features
Definition constraintsimplifier.h:64
QVector< SimplificationChange > changes
Definition constraintsimplifier.h:65
QString error
Definition constraintsimplifier.h:63
quint64 workUsed
Definition constraintsimplifier.h:66
Result of MeshGenerator::generate.
Definition meshresult.h:181
A cell in the mesh — a triangle or (since the engine's mixed tri-quad meshes, workplans/TRI_QUAD_MESH...
Definition meshresult.h:62
int v2
Definition meshresult.h:63
int v1
Definition meshresult.h:63
int v3
Fourth vertex of a quadrilateral; -1 = triangle.
Definition meshresult.h:64
int v0
Definition meshresult.h:63
QString tag
Definition meshresult.h:65
Definition cellplanner.h:28
QString reason
Definition cellplanner.h:30
bool cancelled
Definition cellplanner.h:29
bool ok
Definition cellplanner.h:29
bool repairable
Definition cellplanner.h:29
Definition cellplanner.h:10
QString source
Definition cellplanner.h:11
QString reason
Definition cellplanner.h:11
int repairRounds
Definition cellplanner.h:16
quint64 cells
Definition cellplanner.h:15
PatchDisposition disposition
Definition cellplanner.h:14
int region
Definition cellplanner.h:12
bool required
Definition cellplanner.h:13
Definition cellplanner.h:63
double firstSize
Definition cellplanner.h:65
int second
Definition cellplanner.h:64
int first
Definition cellplanner.h:64
double secondSize
Definition cellplanner.h:65
Definition cellplanner.h:67
QVector< PatchInterfaceConflict > examples
Definition cellplanner.h:72
QString error
Definition cellplanner.h:69
bool cancelled
Definition cellplanner.h:68
quint64 violations
Definition cellplanner.h:70
bool ok
Definition cellplanner.h:68
quint64 sharedFaces
Definition cellplanner.h:70
double largestRatio
Definition cellplanner.h:71
Definition cellplanner.h:18
std::function< double(const QRectF &)> maximumSize
Definition cellplanner.h:23
double minimumAngleDegrees
Definition cellplanner.h:19
std::function< double(double, double)> elevationAt
Definition cellplanner.h:24
double terrainTolerance
Definition cellplanner.h:21
double alongSize
Definition cellplanner.h:20
double maximumAspect
Definition cellplanner.h:19
double minimumEdge
Definition cellplanner.h:19
std::function< double(const QRectF &)> terrainToleranceForFootprint
Definition cellplanner.h:22
double alongAngleDegrees
Definition cellplanner.h:20
double acrossSize
Definition cellplanner.h:20
std::function< bool()> cancelled
Definition cellplanner.h:26
std::function< double(const QPointF *, const double *)> terrainBound
Definition cellplanner.h:25
A polyline through a patch's vertices that must be reported as mesh edges with a marker — a conduit r...
Definition meshpatch.h:73
QVector< int > path
Local vertex indices, consecutive ones joined by quad edges.
Definition meshpatch.h:74
QString tag
Definition meshpatch.h:76
int marker
Definition meshpatch.h:75
A generated patch in local indices. Quads are emitted CCW.
Definition meshpatch.h:80
QVector< MeshTriangle > quads
v3 >= 0, local indices.
Definition meshpatch.h:82
QString tag
Definition meshpatch.h:84
QVector< PatchLine > lines
Definition meshpatch.h:87
QVector< QPair< int, int > > boundarySegments
Local index pairs around the patch.
Definition meshpatch.h:83
QVector< QPointF > xy
Definition meshpatch.h:81
Local cell size on a regular grid; NaN marks unusable cells.
Definition quadblocks.h:34
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
Definition cellplanner.h:49
QVector< int > patchRegions
Definition cellplanner.h:53
bool resourceLimited
Definition cellplanner.h:50
QVector< PatchDecision > decisions
Definition cellplanner.h:54
quint64 workUsed
Definition cellplanner.h:55
bool ok
Definition cellplanner.h:50
QVector< PatchMesh > patches
Definition cellplanner.h:52
bool cancelled
Definition cellplanner.h:50
quint64 plannedCells
Definition cellplanner.h:55
quint64 sharedSides
Definition cellplanner.h:55
QString error
Definition cellplanner.h:51
Definition cellplanner.h:43
QVector< QVector< QPointF > > lines
Definition cellplanner.h:45
QVector< PatchMesh > fixedPatches
Definition cellplanner.h:47
QVector< QPolygonF > domains
Definition cellplanner.h:44
QVector< QPolygonF > holes
Definition cellplanner.h:44
QVector< QPointF > pins
Definition cellplanner.h:46
Definition cellplanner.h:33
quint64 maximumWorkspaceBytes
Definition cellplanner.h:39
quint64 maximumPatchCells
Definition cellplanner.h:38
double defaultSize
Definition cellplanner.h:35
std::function< bool(const QPolygonF &)> excluded
Definition cellplanner.h:41
bool allowQuads
Definition cellplanner.h:34
quint64 workBudget
Definition cellplanner.h:39
int maximumRepairRounds
Definition cellplanner.h:37
quint64 maximumCells
Definition cellplanner.h:38
PatchLimits limits
Definition cellplanner.h:36
Definition meshquadregion.h:45
bool automaticCandidate
Derived candidate; no outline constraint on fallback.
Definition meshquadregion.h:61
QPolygonF ring
Closed (last == first optional), simple, any orientation.
Definition meshquadregion.h:46
double mappedAlongAngleDeg
Physical undirected along-axis, degrees from +x CCW; independent of ring start.
Definition meshquadregion.h:68
QVector< int > corners
Mapped: 4 ring vertex indices in ring order; empty = auto-pick.
Definition meshquadregion.h:76
QString tag
MeshTriangle::tag for every cell inside; empty = inherit region marker's.
Definition meshquadregion.h:77
double aspectMax
Free: opposite-side mean ratio cap; < 0 inherits global, 0 unbounded, >= 1 explicit.
Definition meshquadregion.h:70
double hAlong
Definition meshquadregion.h:65
bool directionalSpacing
Explicit Mapped spacing; failure must not fall back to isotropic cells.
Definition meshquadregion.h:63
QVector< QPointF > alignGuide
Free: optional polyline the field aligns to (streets, channels).
Definition meshquadregion.h:75
double alignAngleDeg
Definition meshquadregion.h:73
bool hasAlignAngle
Free: constant cross field at alignAngleDeg (from +x, CCW).
Definition meshquadregion.h:72
QVector< QPolygonF > holes
Definition meshquadregion.h:51
double hAcross
Positive spacings in mesh CRS units, used only when directionalSpacing.
Definition meshquadregion.h:66
QuadRegionMode mode
Definition meshquadregion.h:59
bool isBackground
Definition meshquadregion.h:58
double spacing
Target quad edge length h; 0 = derive from the size field / max area.
Definition meshquadregion.h:62
bool requireMapped
Explicit hard requirement, used by unified planning.
Definition meshquadregion.h:60
Definition constraintsimplifier.h:43
bool rolledBack
Definition constraintsimplifier.h:47
qsizetype rejectedShortcuts
Definition constraintsimplifier.h:45
double areaChange
Definition constraintsimplifier.h:46
QVector< int > sourceVertices
Definition constraintsimplifier.h:49
double maxZDeviation
Definition constraintsimplifier.h:46
QString id
Definition constraintsimplifier.h:44
double maxDeviation
Definition constraintsimplifier.h:46
bool budgetRetained
Definition constraintsimplifier.h:47
qsizetype removed
Definition constraintsimplifier.h:45
Definition constraintsimplifier.h:31
QString label
Definition constraintsimplifier.h:41
QVector< double > z
Definition constraintsimplifier.h:34
ConstraintSimplificationPolicy policy
Definition constraintsimplifier.h:37
bool closed
Definition constraintsimplifier.h:36
Role
Definition constraintsimplifier.h:38
QVector< QPointF > xy
Definition constraintsimplifier.h:33
bool requiredInMesh
Definition constraintsimplifier.h:40
QString id
Definition constraintsimplifier.h:32
enum mesh::SimplificationFeature::Role role
QVector< bool > fixed
Definition constraintsimplifier.h:35
int marker
Definition constraintsimplifier.h:39
Definition sizefield.h:59
std::function< double(double, double)> terrainSizeAt
Definition sizefield.h:91
QVector< QVector< QPointF > > steps
Definition sizefield.h:108
qint64 maxGridCells
Definition sizefield.h:81
double maxSize
Definition sizefield.h:86
double nearSize
Definition sizefield.h:64
double gradation
Definition sizefield.h:71
double areaFloor
Definition sizefield.h:76
QVector< Region > regions
Definition sizefield.h:97
bool footprintBounds
Build a compact min pyramid for verified sizing.
Definition sizefield.h:60
A point that must appear as a vertex in the output mesh.
Definition meshgenerator.h:66
bool hasZ
If true, z is exact — skip DTM re-sampling in post-mesh step.
Definition meshgenerator.h:71
QString tag
Convenience copy (caller can resolve via marker, but stash here too).
Definition meshgenerator.h:69
int marker
Carries a tag id; resolved via marker→tag map.
Definition meshgenerator.h:68
QPointF xy
Definition meshgenerator.h:67
double z
Pre-sampled elevation when hasZ is true (e.g. from DTM thinner).
Definition meshgenerator.h:70
Four-sided patch: corners in cyclic order (either orientation); n subdivisions along corner0→corner1 ...
Definition meshpatch.h:41
QString tag
Definition meshpatch.h:44
int n
Definition meshpatch.h:43
QVector< QPointF > corners
Exactly 4, cyclic.
Definition meshpatch.h:42
int m
Definition meshpatch.h:43
Swept patch: the centreline is offset ±width/2 (mitred at interior vertices) and cut into across quad...
Definition meshpatch.h:51
double along
Definition meshpatch.h:55
QString tag
Definition meshpatch.h:56
double width
Definition meshpatch.h:53
int across
Definition meshpatch.h:54
QVector< QPointF > centreline
>= 2 points.
Definition meshpatch.h:52
Two open bank polylines with independently supplied directions. Endpoints are paired by minimum total...
Definition patch.hpp:58
int across
Definition patch.hpp:60
double along
Definition patch.hpp:61
Vector< Point2 > bankA
Definition patch.hpp:59
Vector< Point2 > bankB
Definition patch.hpp:59
Text tag
Definition patch.hpp:62
Definition constraintaudit.hpp:16
int segment
Definition constraintaudit.hpp:18
Text message
Definition constraintaudit.hpp:17
Text featureId
Definition constraintaudit.hpp:17
Definition constraintaudit.hpp:9
std::uint64_t maximumWorkspaceBytes
Definition constraintaudit.hpp:13
std::uint64_t workBudget
Definition constraintaudit.hpp:12
Vector< Point2 > protectedPoints
Definition constraintaudit.hpp:10
std::function< bool()> cancelled
Definition constraintaudit.hpp:11
int maximumExamples
Definition constraintaudit.hpp:14
Definition constraintaudit.hpp:20
bool complete
Definition constraintaudit.hpp:21
std::uint64_t featuresChecked
Definition constraintaudit.hpp:23
double coordinateRoundoff
Definition constraintaudit.hpp:26
double maximumAreaChange
Definition constraintaudit.hpp:25
double maximumXYDeviation
Definition constraintaudit.hpp:25
std::uint64_t cellsChecked
Definition constraintaudit.hpp:23
bool resourceLimited
Definition constraintaudit.hpp:21
bool ok
Definition constraintaudit.hpp:21
std::uint64_t violations
Definition constraintaudit.hpp:23
Text error
Definition constraintaudit.hpp:22
Vector< ConstraintAuditExample > examples
Definition constraintaudit.hpp:27
bool cancelled
Definition constraintaudit.hpp:21
std::uint64_t workUsed
Definition constraintaudit.hpp:24
double maximumZDeviation
Definition constraintaudit.hpp:25
std::uint64_t segmentsChecked
Definition constraintaudit.hpp:23
Definition constraints.hpp:22
std::optional< double > minimumClearance
Definition constraints.hpp:25
std::optional< double > maxTurnDegrees
Definition constraints.hpp:24
std::optional< double > maxDeviation
Definition constraints.hpp:24
std::optional< double > maxAreaChangeFraction
Definition constraints.hpp:24
int mode
Definition constraints.hpp:23
std::optional< double > maxZDeviation
Definition constraints.hpp:24
Definition planmodel.hpp:141
Vector< Point2 > path
Definition planmodel.hpp:142
double stripWidth
Definition planmodel.hpp:145
int marker
Definition planmodel.hpp:143
Text tag
Definition planmodel.hpp:144
std::uint64_t maximumWorkspaceBytes
Definition constraints.hpp:57
Vector< Point2 > protectedPoints
Definition constraints.hpp:50
std::function< bool()> cancelled
Definition constraints.hpp:51
bool canonicalizeSharedEdges
Definition constraints.hpp:55
std::uint64_t workBudget
Definition constraints.hpp:54
double minimumClearance
Definition constraints.hpp:17
Mode mode
Definition constraints.hpp:11
double maxAreaChange
Definition constraints.hpp:16
double maxDeviation
Definition constraints.hpp:12
double maxZDeviation
Definition constraints.hpp:13
double maxTurnDegrees
Definition constraints.hpp:14
double maxAreaChangeFraction
Definition constraints.hpp:15
bool cancelled
Definition constraints.hpp:60
Vector< SimplificationFeature > features
Definition constraints.hpp:62
bool ok
Definition constraints.hpp:60
Text error
Definition constraints.hpp:61
std::uint64_t workUsed
Definition constraints.hpp:64
Vector< SimplificationChange > changes
Definition constraints.hpp:63
std::uint64_t sharedSegments
Definition constraints.hpp:64
std::uint64_t sharedChains
Definition constraints.hpp:64
Definition planmodel.hpp:96
int v0
Definition planmodel.hpp:97
int v1
Definition planmodel.hpp:97
int marker
Definition planmodel.hpp:97
Definition planmodel.hpp:134
bool ok
Definition planmodel.hpp:138
ReadArray< MeshVertex > vertices
Definition planmodel.hpp:135
Text errorMsg
Definition planmodel.hpp:139
Definition planmodel.hpp:78
Text tag
Definition planmodel.hpp:80
int v1
Definition planmodel.hpp:79
int v2
Definition planmodel.hpp:79
int v3
Definition planmodel.hpp:79
int v0
Definition planmodel.hpp:79
Definition planning.hpp:29
bool ok
Definition planning.hpp:30
bool cancelled
Definition planning.hpp:30
bool repairable
Definition planning.hpp:30
Text reason
Definition planning.hpp:31
Definition planning.hpp:11
std::uint64_t cells
Definition planning.hpp:16
Text source
Definition planning.hpp:12
int region
Definition planning.hpp:13
int repairRounds
Definition planning.hpp:17
PatchDisposition disposition
Definition planning.hpp:15
bool required
Definition planning.hpp:14
Text reason
Definition planning.hpp:12
Definition planning.hpp:64
int second
Definition planning.hpp:65
int first
Definition planning.hpp:65
double firstSize
Definition planning.hpp:66
double secondSize
Definition planning.hpp:66
Definition planning.hpp:68
std::uint64_t sharedFaces
Definition planning.hpp:71
bool ok
Definition planning.hpp:69
Vector< PatchInterfaceConflict > examples
Definition planning.hpp:73
bool cancelled
Definition planning.hpp:69
Text error
Definition planning.hpp:70
double largestRatio
Definition planning.hpp:72
std::uint64_t violations
Definition planning.hpp:71
Definition planning.hpp:19
double minimumEdge
Definition planning.hpp:20
std::function< double(double, double)> elevationAt
Definition planning.hpp:25
double alongSize
Definition planning.hpp:21
double alongAngleDegrees
Definition planning.hpp:21
std::function< double(const Box2 &)> terrainToleranceForFootprint
Definition planning.hpp:23
std::function< bool()> cancelled
Definition planning.hpp:27
std::function< double(const Box2 &)> maximumSize
Definition planning.hpp:24
double acrossSize
Definition planning.hpp:21
std::function< double(const Point2 *, const double *)> terrainBound
Definition planning.hpp:26
double minimumAngleDegrees
Definition planning.hpp:20
double terrainTolerance
Definition planning.hpp:22
double maximumAspect
Definition planning.hpp:20
A polyline through a patch's vertices that must be reported as mesh edges with a marker — a conduit r...
Definition patch.hpp:67
int marker
Definition patch.hpp:69
Vector< int > path
Local vertex indices, consecutive ones joined by quad edges.
Definition patch.hpp:68
Text tag
Definition patch.hpp:70
A generated patch in local indices. Quads are emitted CCW.
Definition patch.hpp:74
Vector< PatchLine > lines
Definition patch.hpp:81
Vector< Point2 > xy
Definition patch.hpp:75
Text tag
Definition patch.hpp:78
Vector< std::pair< int, int > > boundarySegments
Local index pairs around the patch.
Definition patch.hpp:77
Vector< MeshTriangle > quads
v3 >= 0, local indices.
Definition patch.hpp:76
Local cell size on a regular grid; NaN marks unusable cells.
Definition blocks.hpp:30
int rows
Definition blocks.hpp:33
Point2 origin
Lower-left corner of cell (0, 0).
Definition blocks.hpp:31
int cols
Definition blocks.hpp:33
Vector< float > h
Row-major, cols x rows.
Definition blocks.hpp:34
double pitch
Definition blocks.hpp:32
Definition blocks.hpp:49
int minQuadsPerSide
Definition blocks.hpp:52
double minSpacing
Blocks finer than this are not worth a patch.
Definition blocks.hpp:50
double bandRatio
Size bands are powers of this.
Definition blocks.hpp:51
int maxBlocks
Definition blocks.hpp:53
Definition planning.hpp:50
std::uint64_t plannedCells
Definition planning.hpp:56
Text error
Definition planning.hpp:52
std::uint64_t sharedSides
Definition planning.hpp:56
bool ok
Definition planning.hpp:51
Vector< PatchDecision > decisions
Definition planning.hpp:55
bool cancelled
Definition planning.hpp:51
Vector< int > patchRegions
Definition planning.hpp:54
std::uint64_t workUsed
Definition planning.hpp:56
bool resourceLimited
Definition planning.hpp:51
Vector< PatchMesh > patches
Definition planning.hpp:53
Definition planning.hpp:44
Vector< Polygon > domains
Definition planning.hpp:45
Vector< Vector< Point2 > > lines
Definition planning.hpp:46
Vector< PatchMesh > fixedPatches
Definition planning.hpp:48
Vector< Point2 > pins
Definition planning.hpp:47
Vector< Polygon > holes
Definition planning.hpp:45
Definition planning.hpp:34
std::uint64_t maximumWorkspaceBytes
Definition planning.hpp:40
bool allowQuads
Definition planning.hpp:35
int maximumRepairRounds
Definition planning.hpp:38
PatchLimits limits
Definition planning.hpp:37
std::uint64_t maximumCells
Definition planning.hpp:39
std::uint64_t maximumPatchCells
Definition planning.hpp:39
std::uint64_t workBudget
Definition planning.hpp:40
double defaultSize
Definition planning.hpp:36
std::function< bool(const Polygon &)> excluded
Definition planning.hpp:42
Definition regions.hpp:39
bool hasAlignAngle
Free: constant cross field at alignAngleDeg (from +x, CCW).
Definition regions.hpp:67
Text tag
MeshTriangle::tag for every cell inside; empty = inherit region marker's.
Definition regions.hpp:71
double hAcross
Positive spacings in mesh CRS units, used only when directionalSpacing.
Definition regions.hpp:61
double alignAngleDeg
Definition regions.hpp:68
double mappedAlongAngleDeg
Physical undirected along-axis, degrees from +x CCW; independent of ring start.
Definition regions.hpp:63
double aspectMax
Free: opposite-side mean ratio cap; < 0 inherits global, 0 unbounded, >= 1 explicit.
Definition regions.hpp:65
QuadRegionMode mode
Definition regions.hpp:54
bool automaticCandidate
Derived candidate; no outline constraint on fallback.
Definition regions.hpp:56
Vector< int > corners
Mapped: 4 ring vertex indices in ring order; empty = auto-pick.
Definition regions.hpp:70
bool isBackground
Definition regions.hpp:53
bool requireMapped
Explicit hard requirement, used by unified planning.
Definition regions.hpp:55
Vector< Polygon > holes
Definition regions.hpp:46
Polygon ring
Closed (last == first optional), simple, any orientation.
Definition regions.hpp:41
double spacing
Target quad edge length h; 0 = derive from the size field / max area.
Definition regions.hpp:57
bool directionalSpacing
Explicit Mapped spacing; failure must not fall back to isotropic cells.
Definition regions.hpp:58
Vector< Point2 > alignGuide
Free: optional polyline the field aligns to (streets, channels).
Definition regions.hpp:69
double hAlong
Definition regions.hpp:60
Definition constraints.hpp:41
std::ptrdiff_t rejectedShortcuts
Definition constraints.hpp:43
Text id
Definition constraints.hpp:42
double areaChange
Definition constraints.hpp:44
double maxZDeviation
Definition constraints.hpp:44
double maxDeviation
Definition constraints.hpp:44
Vector< int > sourceVertices
Definition constraints.hpp:47
bool budgetRetained
Definition constraints.hpp:45
std::ptrdiff_t removed
Definition constraints.hpp:43
bool rolledBack
Definition constraints.hpp:45
Definition constraints.hpp:29
Vector< double > z
Definition constraints.hpp:32
int marker
Definition constraints.hpp:37
bool closed
Definition constraints.hpp:34
Vector< Point2 > xy
Definition constraints.hpp:31
Text label
Definition constraints.hpp:39
ConstraintSimplificationPolicy policy
Definition constraints.hpp:35
bool requiredInMesh
Definition constraints.hpp:38
Vector< bool > fixed
Definition constraints.hpp:33
Text id
Definition constraints.hpp:30
enum meshkit::plan::SimplificationFeature::Role role
Definition sizefield.hpp:55
double areaFloor
Definition sizefield.hpp:72
bool footprintBounds
Build a compact min pyramid for verified sizing.
Definition sizefield.hpp:56
double maxSize
Definition sizefield.hpp:82
Vector< Vector< Point2 > > steps
Definition sizefield.hpp:105
double nearSize
Definition sizefield.hpp:60
Vector< Region > regions
Definition sizefield.hpp:93
std::function< double(double, double)> terrainSizeAt
Definition sizefield.hpp:87
std::int64_t maxGridCells
Definition sizefield.hpp:77
double gradation
Definition sizefield.hpp:67
Definition planmodel.hpp:147
Point2 xy
Definition planmodel.hpp:148
bool hasZ
Definition planmodel.hpp:152
double z
Definition planmodel.hpp:151
int marker
Definition planmodel.hpp:149
Text tag
Definition planmodel.hpp:150
Four-sided patch: corners in cyclic order (either orientation); n subdivisions along corner0→corner1 ...
Definition patch.hpp:35
int n
Definition patch.hpp:37
int m
Definition patch.hpp:37
Vector< Point2 > corners
Exactly 4, cyclic.
Definition patch.hpp:36
Text tag
Definition patch.hpp:38
Swept patch: the centreline is offset ±width/2 (mitred at interior vertices) and cut into across quad...
Definition patch.hpp:45
Vector< Point2 > centreline
>= 2 points.
Definition patch.hpp:46
Text tag
Definition patch.hpp:50
double width
Definition patch.hpp:47
int across
Definition patch.hpp:48
double along
Definition patch.hpp:49
double b
Definition terrainerrorfield.cpp:42
double c
Definition terrainerrorfield.cpp:42