16 #ifndef QGSMESHFORCEBYPOLYLINES_H
17 #define QGSMESHFORCEBYPOLYLINES_H
20 #include "qgis_core.h"
47 void setInputLine(
const QgsPoint &pt1,
const QgsPoint &pt2,
double tolerance,
bool newVertexOnIntersection );
50 void setTolerance(
double tolerance );
53 void setAddVertexOnIntersection(
bool addVertex );
56 void setDefaultZValue(
double defaultZValue );
63 void setInterpolateZValueOnMesh(
bool interpolateZValueOnMesh );
68 bool mNewVertexOnIntersection =
false;
69 double mTolerance = 1e-8;
70 double mDefaultZValue = 0;
71 bool mInterpolateZValueOnMesh =
false;
75 virtual void finish();
79 QList<int> mRemovedFaces;
80 QList<int> mHoleOnLeft;
81 QList<int> mNeighborOnLeft;
82 QList<int> mHoleOnRight;
83 QList<int> mNeighborOnRight;
84 QList<int> mNewVerticesIndexesOnLine;
85 bool mEndOnPoint2 =
false;
86 int mPoint2VertexIndex = -1;
87 int mCurrentSnappedVertex = -1;
90 bool mFirstPointChecked =
false;
91 bool mSecondPointChecked =
false;
93 void interpolateZValueOnMesh(
QgsPoint &point )
const;
94 void interpolateZValueOnMesh(
int faceIndex,
QgsPoint &point )
const;
98 bool buildForcedElements();
100 bool edgeIntersection(
int vertex1,
102 int &closestSnappedVertex,
106 bool searchIntersectionEdgeFromSnappedVertex(
107 int &intersectionFaceIndex,
108 int &previousSnappedVertex,
109 int ¤tSnappedVertexIndex,
112 QSet<int> &treatedFaces );
117 bool triangulateHoles(
const QList<int> &holeOnLeft,
118 const QList<int> &neighborOnLeft,
120 QList<std::array<int, 2> > &newFacesOnLine,
121 std::array<int, 2> &extremeFaces );
123 bool finishForcingLine();
125 friend class TestQgsMeshEditor;
151 QString
text()
const override;
160 void addLineFromGeometry(
const QgsGeometry &geom );
168 void addLinesFromGeometries(
const QList<QgsGeometry> geometries );
171 QList<QgsPointSequence> mPolylines;
172 int mCurrentPolyline = 0;
173 int mCurrentSegment = 0;
175 void incrementSegment();
182 #endif // QGSMESHFORCEBYPOLYLINES_H