|
@@ -116,7 +116,7 @@ QgsRasterBlock *QgsMeshLayerInterpolator::block( int, const QgsRectangle &extent |
|
|
const QgsMeshFace &face = mTriangularMesh.triangles()[triangleIndex]; |
|
|
|
|
|
const int v1 = face[0], v2 = face[1], v3 = face[2]; |
|
|
const QgsPoint p1 = vertices[v1], p2 = vertices[v2], p3 = vertices[v3]; |
|
|
const QgsPointXY &p1 = vertices[v1], &p2 = vertices[v2], &p3 = vertices[v3]; |
|
|
|
|
|
const int nativeFaceIndex = mTriangularMesh.trianglesToNativeFaces()[triangleIndex]; |
|
|
const bool isActive = mActiveFaceFlagValues.active( nativeFaceIndex ); |
|
@@ -131,6 +131,18 @@ QgsRasterBlock *QgsMeshLayerInterpolator::block( int, const QgsRectangle &extent |
|
|
int topLim, bottomLim, leftLim, rightLim; |
|
|
QgsMeshLayerUtils::boundingBoxToScreenRectangle( mContext.mapToPixel(), mOutputSize, bbox, leftLim, rightLim, topLim, bottomLim ); |
|
|
|
|
|
double value( 0 ), value1( 0 ), value2( 0 ), value3( 0 ); |
|
|
const int faceIdx = mTriangularMesh.trianglesToNativeFaces()[triangleIndex]; |
|
|
|
|
|
if ( mDataType == QgsMeshDatasetGroupMetadata::DataType::DataOnVertices ) |
|
|
{ |
|
|
value1 = mDatasetValues[v1]; |
|
|
value2 = mDatasetValues[v2]; |
|
|
value3 = mDatasetValues[v3]; |
|
|
} |
|
|
else |
|
|
value = mDatasetValues[faceIdx]; |
|
|
|
|
|
// interpolate in the bounding box of the face |
|
|
for ( int j = topLim; j <= bottomLim; j++ ) |
|
|
{ |
|
@@ -144,18 +156,17 @@ QgsRasterBlock *QgsMeshLayerInterpolator::block( int, const QgsRectangle &extent |
|
|
p1, |
|
|
p2, |
|
|
p3, |
|
|
mDatasetValues[v1], |
|
|
mDatasetValues[v2], |
|
|
mDatasetValues[v3], |
|
|
value1, |
|
|
value2, |
|
|
value3, |
|
|
p ); |
|
|
else |
|
|
{ |
|
|
const int faceIdx = mTriangularMesh.trianglesToNativeFaces()[triangleIndex]; |
|
|
val = QgsMeshLayerUtils::interpolateFromFacesData( |
|
|
p1, |
|
|
p2, |
|
|
p3, |
|
|
mDatasetValues[faceIdx], |
|
|
value, |
|
|
p |
|
|
); |
|
|
} |
|
|