18#ifndef QGSTRIANGULARMESH_H 
   19#define QGSTRIANGULARMESH_H 
   77    bool update( 
QgsMesh *nativeMesh );
 
   85    const QVector<QgsMeshVertex> &vertices() 
const ;
 
   88    const QVector<QgsMeshFace> &triangles() 
const ;
 
   91    const QVector<QgsMeshEdge> &edges() 
const ;
 
   98    Q_DECL_DEPRECATED 
const QVector<QgsMeshVertex> ¢roids() 
const ;
 
  104    const QVector<QgsMeshVertex> &faceCentroids() 
const ;
 
  110    const QVector<QgsMeshVertex> &edgeCentroids() 
const ;
 
  113    const QVector<int> &trianglesToNativeFaces() 
const ;
 
  116    const QVector<int> &edgesToNativeEdges() 
const ;
 
  137    int faceIndexForPoint( 
const QgsPointXY &point ) 
const ;
 
  148    int faceIndexForPoint_v2( 
const QgsPointXY &point ) 
const;
 
  159    int nativeFaceIndexForPoint( 
const QgsPointXY &point ) 
const ;
 
  170    QList<int> nativeFaceIndexForRectangle( 
const QgsRectangle &rectangle ) 
const ;
 
  181    QList<int> faceIndexesForRectangle( 
const QgsRectangle &rectangle ) 
const ;
 
  190    QList<int> edgeIndexesForRectangle( 
const QgsRectangle &rectangle ) 
const ;
 
  200    QVector<QVector3D> vertexNormals( 
float vertScale ) 
const;
 
  217    QVector<QgsTriangularMesh *> simplifyMesh( 
double reductionFactor, 
int minimumTrianglesCount = 10 ) 
const;
 
  225    double averageTriangleSize() 
const;
 
  237    int levelOfDetail() 
const;
 
  277        QVector<QgsMeshVertex> mAddedVertices;
 
  278        QList<int> mVerticesIndexesToRemove;
 
  279        QList<int> mChangedVerticesCoordinates;
 
  280        mutable QList<double> mOldZValue;
 
  281        QList<double> mNewZValue;
 
  282        QList<QgsPointXY> mOldXYValue;
 
  283        QList<QgsPointXY> mNewXYValue;
 
  285        QVector<QgsMeshFace> mNativeFacesToAdd;
 
  286        QList<int> mNativeFaceIndexesToRemove;
 
  287        QVector<QgsMeshFace> mNativeFacesToRemove;
 
  288        QList<int> mNativeFaceIndexesGeometryChanged;
 
  289        QVector<QgsMeshFace> mNativeFacesGeometryChanged;
 
  290        mutable QList<int> mTriangleIndexesGeometryChanged;
 
  292        mutable int mTrianglesAddedStartIndex = 0;  
 
  293        mutable QList<int> mRemovedTriangleIndexes; 
 
 
  303    void applyChanges( 
const Changes &changes );
 
  310    void reverseChanges( 
const Changes &changes, 
const QgsMesh &nativeMesh );
 
  348    void triangulate( 
const QgsMeshFace &face, 
int nativeIndex );
 
  358    void finalizeTriangles();
 
  363    QVector<int> mTrianglesToNativeFaces; 
 
  364    QVector<int> mEdgesToNativeEdges; 
 
  367    QVector<QgsMeshVertex> mNativeMeshFaceCentroids;
 
  370    QVector<QgsMeshVertex> mNativeMeshEdgeCentroids;
 
  377    mutable bool mIsExtentValid = 
false;
 
  380    double mAverageTriangleSize = 0;
 
  385    friend class TestQgsTriangularMesh;
 
 
  397  CORE_EXPORT std::unique_ptr< QgsPolygon > toPolygon( 
const QgsMeshFace &face, 
const QVector<QgsMeshVertex> &vertices );
 
  403  CORE_EXPORT QSet<int> nativeFacesFromTriangles( 
const QList<int> &triangleIndexes, 
const QVector<int> &trianglesToNativeFaces );
 
  409  CORE_EXPORT QSet<int> nativeEdgesFromEdges( 
const QList<int> &edgesIndexes, 
const QVector<int> &edgesToNativeEdges );
 
  415  CORE_EXPORT QSet<int> nativeVerticesFromTriangles( 
const QList<int> &triangleIndexes, 
const QVector<QgsMeshFace> &triangles );
 
  421  CORE_EXPORT QSet<int> nativeVerticesFromEdges( 
const QList<int> &edgesIndexes, 
const QVector<QgsMeshEdge> &edges );
 
  427  bool isInTriangleFace( 
const QgsPointXY point, 
const QgsMeshFace &face,  
const QVector<QgsMeshVertex> &vertices );
 
TransformDirection
Indicates the direction (forward or inverse) of a transform.
 
A geometry is the spatial representation of a feature.
 
A spatial index for QgsMeshFace or QgsMeshEdge objects.
 
A class to represent a 2D point.
 
Point geometry type, with support for z-dimension and m-values.
 
A rectangle specified with double values.
 
Contains information about the context of a rendering operation.
 
Class that contains topological differences between two states of a topological mesh,...
 
The Changes class is used to make changes of the triangular and to keep traces of this changes If a C...
 
Changes()=default
Default constructor, no changes.
 
Triangular/Derived Mesh is mesh with vertices in map coordinates.
 
~QgsTriangularMesh()
Dtor.
 
QVector< int > QgsMeshFace
List of vertex indexes.
 
Mesh - vertices, edges and faces.
 
ElementType
Defines type of mesh elements.