QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
16 #ifndef QGSTOPOLOGICALMESH_H
17 #define QGSTOPOLOGICALMESH_H
24 template CORE_EXPORT QVector<int>
SIP_SKIP;
25 template CORE_EXPORT QList<int>
SIP_SKIP;
26 template CORE_EXPORT QVector<QVector<int>>
SIP_SKIP;
67 QVector<QgsMeshFace>
meshFaces()
const {
return mFaces;}
73 QVector<FaceNeighbors> facesNeighborhood()
const;
76 int vertexToFace(
int vertexIndex )
const;
79 QVector<QgsMeshFace> mFaces;
80 QVector<FaceNeighbors> mFacesNeighborhood;
81 QMultiHash<int, int> mVerticesToFace;
82 QList<int> mBoundaries;
101 QVector<QgsMeshFace> addedFaces()
const;
104 QVector<QgsMeshFace> removedFaces()
const;
107 QList<int> removedFaceIndexes()
const;
110 QVector<QgsMeshVertex> addedVertices()
const;
113 QList<int> verticesToRemoveIndexes()
const;
116 QList<int> changedCoordinatesVerticesIndexes()
const;
119 QList<double> newVerticesZValues()
const;
122 QList<QgsPointXY> newVerticesXYValues()
const;
125 QList<QgsPointXY> oldVerticesXYValues()
const;
128 QList<int> nativeFacesIndexesGeometryChanged()
const;
131 bool isEmpty()
const;
134 int mAddedFacesFirstIndex = 0;
160 int addedFaceIndexInMesh(
int internalIndex )
const;
161 int removedFaceIndexInMesh(
int internalIndex )
const;
238 bool canBeMerged(
int vertexIndex1,
int vertexIndex2 )
const;
330 const QVector<QgsMeshFace> &faces,
331 QVector<int> *globalVertexToFace,
333 bool allowUniqueSharedVertex );
336 QSet<int> concernedFacesBy(
const QList<int> faceIndexes )
const;
339 void referenceAsFreeVertex(
int vertexIndex );
341 void dereferenceAsFreeVertex(
int vertexIndex );
347 bool eitherSideFacesAndVertices(
int vertexIndex1,
351 int &neighborVertex1InFace1,
352 int &neighborVertex1InFace2,
353 int &neighborVertex2inFace1,
354 int &neighborVertex2inFace2 )
const;
356 bool renumberVertices( QVector<int> &oldToNewIndex )
const;
357 bool renumberFaces( QVector<int> &oldToNewIndex )
const;
361 QVector<int> mVertexToFace;
362 QVector<FaceNeighbors> mFacesNeighborhood;
364 QSet<int> mFreeVertices;
366 int mMaximumVerticesPerFace = 0;
401 int turnCounterClockwise()
const;
404 int turnClockwise()
const;
407 int currentFaceIndex()
const;
413 bool goBoundaryClockwise()
const;
416 bool goBoundaryCounterClockwise()
const;
419 int oppositeVertexClockwise()
const;
422 int oppositeVertexCounterClockwise()
const;
425 bool isValid()
const;
428 QList<int> facesAround()
const;
434 const QVector<QgsMeshFace> mFaces;
435 const QVector<QgsTopologicalMesh::FaceNeighbors> mFacesNeighborhood;
436 const int mVertexIndex = -1;
437 mutable int mCurrentFace = -1;
438 mutable int mLastValidFace = -1;
439 bool mIsValid =
false;
440 mutable int mDegree = -1;
442 int positionInCurrentFace()
const;
445 #endif // QGSTOPOLOGICALMESH_H
bool isVertexFree(int vertexIndex) const
Returns whether the vertex is a free vertex.
bool edgeCanBeFlipped(int vertexIndex1, int vertexIndex2) const
Returns true if the edge can be flipped (only available for edge shared by two faces with 3 vertices)
QList< double > mNewZValues
Changes merge(int vertexIndex1, int vertexIndex2)
Merges faces separated by vertices with indexes vertexIndex1 and vertexIndex2 The method returns a in...
Class that contains independent faces an topological information about this faces.
Changes addFreeVertex(const QgsMeshVertex &vertex)
Adds a free vertex in the face, that is a vertex tha tis not included or linked with any faces.
Class that contains topological differences between two states of a topological mesh,...
QVector< int > FaceNeighbors
Point geometry type, with support for z-dimension and m-values.
bool canBeMerged(int vertexIndex1, int vertexIndex2) const
Returns true if faces separated by vertices with indexes vertexIndex1 and vertexIndex2 can be merged.
QList< QgsPointXY > mNewXYValues
QList< double > mOldZValues
void reverseChanges(const Changes &changes)
Reverses the changes.
Changes changeZValue(const QList< int > &verticesIndexes, const QList< double > &newValues)
Changes the Z values of the vertices with indexes in vertices indexes with the values in newValues.
Mesh - vertices, edges and faces.
QList< int > mChangeCoordinateVerticesIndexes
Convenient class that turn around a vertex and provide information about faces and vertices.
bool isVertexOnBoundary(int vertexIndex) const
Returns whether the vertex is on a boundary.
QVector< int > neighborsOfFace(int faceIndex) const
Returns the indexes of neighbor faces of the face with index faceIndex.
QList< int > facesAroundVertex(int vertexIndex) const
Returns the indexes of faces that are around the vertex with index vertexIndex.
QVector< QgsMeshFace > meshFaces() const
Returns faces.
Class that wraps a QgsMesh to ensure the consistency of the mesh during editing and help to access to...
QVector< FaceNeighbors > mFacesNeighborhoodToAdd
Changes flipEdge(int vertexIndex1, int vertexIndex2)
Flips edge (vertexIndex1, vertexIndex2) The method returns a instance of the class QgsTopologicalMesh...
QList< std::array< int, 4 > > mNeighborhoodChanges
QList< int > freeVerticesIndexes() const
Returns a list of vertices are not linked to any faces.
QList< int > mVerticesToFaceRemoved
QVector< QgsMeshFace > mFacesToRemove
QList< QgsMeshVertex > mRemovedVertices
bool canBeSplit(int faceIndex) const
Returns true if face with index faceIndex can be split.
Changes changeXYValue(const QList< int > &verticesIndexes, const QList< QgsPointXY > &newValues)
Changes the (X,Y) values of the vertices with indexes in vertices indexes with the values in newValue...
Class that represents an error during mesh editing.
bool renumber()
Renumbers the indexes of vertices and faces using the Reverse CutHill McKee Algorithm.
Changes removeVertices(const QList< int > &vertices)
Removes all the vertices with index in the list vertices If vertices in linked with faces,...
QVector< QgsMeshFace > mFacesToAdd
Changes addVertexInFace(int faceIndex, const QgsMeshVertex &vertex)
Adds a vertex in the face with index faceIndex.
QgsMeshVertexCirculator vertexCirculator(int vertexIndex) const
Returns a vertex circulator linked to this mesh around the vertex with index vertexIndex.
QVector< int > mVertexToFaceToAdd
Changes removeVertexFillHole(int vertexIndex)
Removes the vertex with index vertexIndex.
QVector< int > QgsMeshFace
List of vertex indexes.
QList< std::array< int, 3 > > mVerticesToFaceChanges
QgsMeshEditingError checkConsistency() const
Checks the consistency of the topological mesh and return false if there is a consistency issue.
Changes insertVertexInFacesEdge(int faceIndex, int position, const QgsMeshVertex &vertex)
Inserts a vertex in the edge of face with index faceIndex at position .
QList< int > mNativeFacesIndexesGeometryChanged
QList< int > mFaceIndexesToRemove
Changes removeFaces(const QList< int > facesIndexes)
Removes faces with index in faceIndexes.
Changes splitFace(int faceIndex)
Splits face with index faceIndex The method returns a instance of the class QgsTopologicalMesh::Chang...
QVector< QgsMeshVertex > mVerticesToAdd
static QgsMeshEditingError checkTopology(const QgsMesh &mesh, int maxVerticesPerFace)
Checks the topology of the mesh mesh, if error occurs, this mesh can't be edited.
Changes addFaces(const TopologicalFaces &topologicFaces)
Adds faces topologicFaces to the topologic mesh.
static QgsTopologicalMesh createTopologicalMesh(QgsMesh *mesh, int maxVerticesPerFace, QgsMeshEditingError &error)
Creates a topologicaly consistent mesh with mesh, this static method modifies mesh to be topological ...
QList< int > mVerticesToRemoveIndexes
void applyChanges(const Changes &changes)
Applies the changes.
static TopologicalFaces createNewTopologicalFaces(const QVector< QgsMeshFace > &faces, bool uniqueSharedVertexAllowed, QgsMeshEditingError &error)
Creates new topological faces that are not yet included in the mesh.
QVector< FaceNeighbors > mFacesNeighborhoodToRemove
static QgsMeshEditingError counterClockwiseFaces(QgsMeshFace &face, QgsMesh *mesh)
Checks the topology of the face and sets it counter clockwise if necessary.
QgsMesh * mesh() const
Returns a pointer to the wrapped mesh.
QgsMeshEditingError facesCanBeRemoved(const QList< int > facesIndexes)
Returns whether faces with index in faceIndexes can be removed/ The method an error object with type ...
void reindex()
Reindexes faces and vertices, after this operation, the topological mesh can't be edited anymore and ...
QgsMeshEditingError facesCanBeAdded(const TopologicalFaces &topologicalFaces) const
Returns whether the faces can be added to the mesh.
int firstFaceLinked(int vertexIndex) const
Returns the index of the first face linked, returns -1 if it is a free vertex or out of range index.
QList< QgsPointXY > mOldXYValues