21#ifndef OPENSWMMVIS_MESH_PSLGPREP_H
22#define OPENSWMMVIS_MESH_PSLGPREP_H
74 int *flaggedOut =
nullptr);
83 int *flaggedOut =
nullptr);
139 double simplifyEps,
double maxEdgeLen,
140 QVector<PreparedRing> *out,
141 const std::function<
bool()> &isCancelled = {},
142 const std::function<void(
int,
int)> &onChunk = {},
143 int *skippedOut =
nullptr);
158 void build(
const QVector<QPolygonF> &domains,
159 const QVector<QVector<QPointF>> &holes = {},
162 [[nodiscard]]
bool contains(
const QPointF &
p)
const;
164 [[nodiscard]]
bool isEmpty()
const {
return m_edges.isEmpty(); }
167 void addRing(
const QVector<QPointF> &
ring);
169 QVector<QPair<QPointF, QPointF>> m_edges;
170 QVector<QVector<int>> m_bandEdges;
171 double m_x0 = 0.0, m_x1 = 0.0, m_y0 = 0.0, m_y1 = 0.0;
172 double m_bandH = 0.0;
y-banded odd-even point-in-rings index.
Definition pslgprep.h:156
bool isEmpty() const
Definition pslgprep.h:164
void build(const QVector< QPolygonF > &domains, const QVector< QVector< QPointF > > &holes={}, int nBands=1024)
Definition pslgprep.cpp:495
bool contains(const QPointF &p) const
Definition pslgprep.cpp:527
QRectF boundingBox() const
Definition pslgprep.cpp:549
ArrowPlacement p
Definition linesymbollayer.cpp:27
QPolygonF ring
normalizeRingCCW(r.ring).
Definition meshgenerator.cpp:156
QVector< QPointF > pts
Definition meshpatch.cpp:62
int b
local residual indices, a < b
Definition meshquadmatch.cpp:46
int a
Definition meshquadmatch.cpp:46
QVector< QPointF > densifyRing(const QVector< QPointF > &ring, double maxLen)
Definition pslgprep.cpp:99
void snapAndDedupe(QVector< mesh::SteinerPoint > &pts, double snapEps)
Definition pslgprep.cpp:326
QVector< bool > greedyMinSeparation(const QVector< QPointF > &pts, double minSep)
Greedy minimum-separation thinning in input order.
Definition pslgprep.cpp:357
QVector< QPointF > simplifyPolyline(const QVector< QPointF > &pts, double epsilon)
Definition pslgprep.cpp:59
QVector< QPointF > simplifyRing(const QVector< QPointF > &ring, double epsilon)
Definition pslgprep.cpp:73
double distSqToSegment(const QPointF &p, const QPointF &a, const QPointF &b)
Definition pslgprep.cpp:309
QVector< QPointF > resampleMinLength(const QVector< QPointF > &pts, double minLen, double maxDeviation, int *flaggedOut=nullptr)
Length-based decimation — the inverse of densifyRing().
Definition pslgprep.cpp:173
double ringSignedArea(const QVector< QPointF > &ring)
Definition pslgprep.cpp:133
QVector< QPointF > resampleRingMinLength(const QVector< QPointF > &ring, double minLen, double maxDeviation, int *flaggedOut=nullptr)
Definition pslgprep.cpp:262
bool prepareHoleRings(const QVector< QVector< QPointF > > &raw, double simplifyEps, double maxEdgeLen, QVector< PreparedRing > *out, const std::function< bool()> &isCancelled={}, const std::function< void(int, int)> &onChunk={}, int *skippedOut=nullptr)
Prepare many hole rings in parallel (order-preserving).
Definition pslgprep.cpp:430
double polylineLength(const QVector< QPointF > &pts)
Definition pslgprep.cpp:125
PreparedRing prepareHoleRing(const QVector< QPointF > &raw, double simplifyEps, double maxEdgeLen)
Definition pslgprep.cpp:402
Definition meshcommands.h:302
One hole ring after preparation for the PSLG.
Definition pslgprep.h:118
QVector< QPointF > ring
simplified + densified boundary (mesh CRS)
Definition pslgprep.h:119
bool valid
false → degenerate or self-intersecting
Definition pslgprep.h:121
QPointF seed
interior seed point for Triangle's hole carve
Definition pslgprep.h:120