QGIS API Documentation  3.17.0-Master (df2c9ff931)
qgstriangulation.h
Go to the documentation of this file.
1 /***************************************************************************
2  Triangulation.h - description
3  -------------------
4  copyright : (C) 2004 by Marco Hugentobler
5  email : [email protected]
6  ***************************************************************************/
7 
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 
17 #ifndef TRIANGULATION_H
18 #define TRIANGULATION_H
19 
20 #include <QList>
21 #include "qgis_sip.h"
22 #include <QPainter>
23 #include "TriangleInterpolator.h"
24 #include "qgis_analysis.h"
25 #include "qgsinterpolator.h"
26 #include "qgsmeshdataprovider.h"
27 
28 class QgsFeatureSink;
29 class QgsFields;
30 class QgsFeedback;
31 
32 #define SIP_NO_FILE
33 
41 class ANALYSIS_EXPORT QgsTriangulation
42 {
43  public:
46  {
49  InsertVertex
50  };
51  virtual ~QgsTriangulation() = default;
52 
57  virtual void addLine( const QgsPointSequence &points, QgsInterpolator::SourceType lineType ) = 0;
58 
64  virtual int addPoint( const QgsPoint &point ) = 0;
65 
70  virtual bool calcNormal( double x, double y, QgsPoint &result SIP_OUT ) = 0;
71 
73  virtual void performConsistencyTest() = 0;
74 
79  virtual bool calcPoint( double x, double y, QgsPoint &result SIP_OUT ) = 0;
80 
82  virtual QgsPoint *point( int i ) const = 0;
83 
88  virtual bool triangleVertices( double x, double y, QgsPoint &p1 SIP_OUT, int &n1 SIP_OUT, QgsPoint &p2 SIP_OUT, int &n2 SIP_OUT, QgsPoint &p3 SIP_OUT, int &n3 SIP_OUT ) = 0;
89 
91  virtual bool triangleVertices( double x, double y, QgsPoint &p1 SIP_OUT, QgsPoint &p2 SIP_OUT, QgsPoint &p3 SIP_OUT ) = 0;
92 
99  virtual int oppositePoint( int p1, int p2 ) = 0;
100 
102  virtual double xMax() const = 0;
103 
105  virtual double xMin() const = 0;
106 
108  virtual double yMax() const = 0;
109 
111  virtual double yMin() const = 0;
112 
114  virtual int pointsCount() const = 0;
115 
122  virtual QList<int> surroundingTriangles( int pointno ) = 0;
123 
130  virtual QList<int> pointsAroundEdge( double x, double y ) = 0;
131 
133  //virtual void draw(QPainter* p, double xlowleft, double ylowleft, double xupright, double yupright, double width, double height) const=0;
134 
136  virtual void setForcedCrossBehavior( QgsTriangulation::ForcedCrossBehavior b ) = 0;
137 
139  virtual void setTriangleInterpolator( TriangleInterpolator *interpolator ) = 0;
140 
142  virtual void eliminateHorizontalTriangles() = 0;
143 
145  virtual void ruppertRefinement() = 0;
146 
148  virtual bool pointInside( double x, double y ) = 0;
149 
151  //virtual bool readFromTAFF(QString fileName)=0;
152 
154  //virtual bool saveToTAFF(QString fileName) const=0;
155 
157  virtual bool swapEdge( double x, double y ) = 0;
158 
166  static QgsFields triangulationFields();
167 
179  virtual bool saveTriangulation( QgsFeatureSink *sink, QgsFeedback *feedback = nullptr ) const = 0;
180 
186  virtual QgsMesh triangulationToMesh( QgsFeedback *feedback = nullptr ) const = 0;
187 };
188 
189 #endif
The status of the first inserted forced line is reset to that of a normal edge (so that the second in...
An interface for objects which accept features via addFeature(s) methods.
ForcedCrossBehavior
Enumeration describing the behavior, if two forced lines cross.
Container of fields for a vector layer.
Definition: qgsfields.h:44
SourceType
Describes the type of input data.
Base class for feedback objects to be used for cancellation of something running in a worker thread...
Definition: qgsfeedback.h:43
The second inserted forced line is snapped to the closest vertice of the first inserted forced line...
This is an interface for interpolator classes for triangulations.
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:37
Interface for Triangulation classes.
QVector< QgsPoint > QgsPointSequence
Mesh - vertices, edges and faces.
#define SIP_OUT
Definition: qgis_sip.h:58