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
constraintsimplifier.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2#pragma once
3#include <QPointF>
4#include <QString>
5#include <QVector>
6#include <functional>
7#include <optional>
8
9namespace mesh
10{
12 enum class Mode { Preserve, Simplify };
14 double maxDeviation = 0; // XY, in the common planar frame
15 double maxZDeviation = 0; // Z, in the supplied elevation units; 0 preserves exact heights
16 double maxTurnDegrees = 5;
17 double maxAreaChangeFraction = .001; // Relative to original ring area; -1 disables
18 double maxAreaChange = -1; // Absolute area in squared XY units; -1 disables
19 double minimumClearance = 0;
20 QString validate() const;
21};
22// Unset fields inherit from the parent policy. The caller supplies consistent
23// planar/elevation units before resolving; no implicit conversion or clamping.
25 int mode = -1; // -1 inherits, 0 preserves, 1 simplifies
26 std::optional<double> maxDeviation, maxZDeviation, maxTurnDegrees,
28 QString validate() const;
30};
32 QString id;
33 QVector<QPointF> xy;
34 QVector<double> z; // Empty or exactly one finite value per XY vertex
35 QVector<bool> fixed; // Semantic vertices; absent flags mean false
36 bool closed = false;
39 int marker = 0;
40 bool requiredInMesh = true;
41 QString label; // Optional human-readable source label; id remains stable.
42};
44 QString id;
45 qsizetype removed = 0, rejectedShortcuts = 0;
47 bool budgetRetained = false, rolledBack = false;
48 // Empty means identity. Otherwise maps each output vertex to its original index.
49 QVector<int> sourceVertices;
50};
52 QVector<QPointF> protectedPoints;
53 std::function<bool()> cancelled;
54 // Zero selects 256 operations per input vertex plus 100,000. Exhaustion
55 // retains original features, never relaxes geometry checks.
56 quint64 workBudget = 0;
58 // A bounded shared-edge workspace; exceeding it retains the original graph.
59 quint64 maximumWorkspaceBytes = quint64(1) << 30;
60};
62 bool ok = false, cancelled = false;
63 QString error;
64 QVector<SimplificationFeature> features;
65 QVector<SimplificationChange> changes;
66 quint64 sharedSegments = 0, sharedChains = 0, workUsed = 0;
67};
68// All features share one immutable segment index. Input must describe the
69// intended original graph in one planar frame. Coordinates never move. Every
70// accepted shortcut is checked against its entire original span (XY and Z),
71// original obstacles/pins and swept pockets; output shortcuts are checked
72// against each other. Exact shared-edge chains are simplified once under the
73// strictest owner policies and stitched back with source mappings. Differently
74// sampled overlaps remain conservative; coordinates are never proximity-welded.
76simplifyConstraints(const QVector<SimplificationFeature> &features,
78
79namespace detail
80{
81// Internal shared-chain adapter; the public entry point validates input first.
83simplifySharedConstraints(const QVector<SimplificationFeature> &features,
85}
86}
ConstraintSimplificationResult simplifySharedConstraints(const QVector< SimplificationFeature > &features, const ConstraintSimplificationOptions &options)
Definition constraintshared.cpp:6
Definition meshcommands.h:38
ConstraintSimplificationResult simplifyConstraints(const QVector< SimplificationFeature > &features, const ConstraintSimplificationOptions &options={})
Definition constraintsimplifier.cpp:9
const ConstraintAuditOptions & options
Definition constraintaudit.cpp:34
int parent
Definition planning.cpp:199
Definition constraintsimplifier.h:24
int mode
Definition constraintsimplifier.h:25
ConstraintSimplificationPolicy resolve(ConstraintSimplificationPolicy parent) const
Definition constraintsimplifier.cpp:8
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
QString validate() const
Definition constraintsimplifier.cpp:7
std::optional< double > maxDeviation
Definition constraintsimplifier.h:26
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
QString validate() const
Definition constraintsimplifier.cpp:6
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
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