2D contour map : Guard for zero overlap volume

This commit is contained in:
Magne Sjaastad
2018-11-08 14:22:24 +01:00
parent 41e9f0169a
commit 22a7a3da2a

View File

@@ -699,20 +699,26 @@ std::vector<std::pair<size_t, double>> Rim2dGridProjection::visibleCellsAndWeigh
}
}
cvf::Vec3d improvedBottomSwCorner = bottomSWCorner; improvedBottomSwCorner.z() = minHeight;
cvf::Vec3d improvedTopNECorner = topNECorner; improvedTopNECorner.z() = maxHeight;
cvf::BoundingBox improvedBbox2dElement = cvf::BoundingBox(improvedBottomSwCorner, improvedTopNECorner);
cvf::Vec3d improvedBboxExtent = improvedBbox2dElement.extent();
double improvedBboxVolume = improvedBboxExtent.x() * improvedBboxExtent.y() * improvedBboxExtent.z();
double volAdjustmentFactor = 1.0;
if (sumOverlapVolumes > improvedBboxVolume)
if (sumOverlapVolumes > 0.0)
{
// Total volume weights for 2d Element should never be larger than the volume of the extruded 2d element.
volAdjustmentFactor = improvedBboxVolume / sumOverlapVolumes;
cvf::Vec3d improvedBottomSwCorner = bottomSWCorner;
improvedBottomSwCorner.z() = minHeight;
cvf::Vec3d improvedTopNECorner = topNECorner;
improvedTopNECorner.z() = maxHeight;
cvf::BoundingBox improvedBbox2dElement = cvf::BoundingBox(improvedBottomSwCorner, improvedTopNECorner);
cvf::Vec3d improvedBboxExtent = improvedBbox2dElement.extent();
double improvedBboxVolume = improvedBboxExtent.x() * improvedBboxExtent.y() * improvedBboxExtent.z();
if (sumOverlapVolumes > improvedBboxVolume)
{
// Total volume weights for 2d Element should never be larger than the volume of the extruded 2d element.
volAdjustmentFactor = improvedBboxVolume / sumOverlapVolumes;
}
}
std::vector<std::pair<size_t, double>> matchingVisibleCellsAndWeight;
if (!matchingVisibleCellsWeightAndHeight.empty())