mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#6517 Fudge the maximimum and minimum contour levels inwards
* Unify with logaritmic contour levels. * Ensure the labels in the contour map show less precision. Fudge in the opposite direction and unify with logarithmic
This commit is contained in:
parent
f967cfcb65
commit
ec40673119
@ -25,10 +25,12 @@
|
||||
#include "cvfPrimitiveSetIndexedUInt.h"
|
||||
#include "cvfRay.h"
|
||||
#include "cvfScalarMapper.h"
|
||||
#include "cvfqtUtils.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include <QDebug>
|
||||
#include <QString>
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -267,7 +269,9 @@ std::vector<std::vector<cvf::ref<cvf::Drawable>>>
|
||||
{
|
||||
if ( m_contourLinePolygons[i][j].vertices.empty() ) continue;
|
||||
|
||||
cvf::String labelText( m_contourLinePolygons[i][j].value );
|
||||
// cvf::String::number does not allow precision on 'g' formats, so use Qt.
|
||||
QString qLabelText = QString::number( m_contourLinePolygons[i][j].value, 'g', 2 );
|
||||
cvf::String labelText = cvfqt::Utils::toString( qLabelText );
|
||||
|
||||
size_t nVertices = m_contourLinePolygons[i][j].vertices.size();
|
||||
|
||||
@ -402,7 +406,9 @@ std::vector<cvf::ref<cvf::Drawable>>
|
||||
{
|
||||
if ( m_contourLinePolygons[i][j].vertices.empty() ) continue;
|
||||
|
||||
cvf::String labelText( m_contourLinePolygons[i][j].value );
|
||||
// cvf::String::number does not allow precision on 'g' formats, so use Qt.
|
||||
QString qLabelText = QString::number( m_contourLinePolygons[i][j].value, 'g', 2 );
|
||||
cvf::String labelText = cvfqt::Utils::toString( qLabelText );
|
||||
|
||||
size_t nVertices = m_contourLinePolygons[i][j].vertices.size();
|
||||
size_t nLabels = nVertices;
|
||||
|
@ -976,11 +976,11 @@ void RimContourMapProjection::generateTrianglesWithVertexValues()
|
||||
std::vector<cvf::Vec3d> clippedTriangle;
|
||||
if ( v == clippedPolygon.size() - 1 )
|
||||
{
|
||||
clippedTriangle = { clippedPolygon[v], clippedPolygon[0], baryCenter };
|
||||
clippedTriangle = {clippedPolygon[v], clippedPolygon[0], baryCenter};
|
||||
}
|
||||
else
|
||||
{
|
||||
clippedTriangle = { clippedPolygon[v], clippedPolygon[v + 1], baryCenter };
|
||||
clippedTriangle = {clippedPolygon[v], clippedPolygon[v + 1], baryCenter};
|
||||
}
|
||||
polygonTriangles.push_back( clippedTriangle );
|
||||
}
|
||||
@ -1103,18 +1103,14 @@ void RimContourMapProjection::generateContourPolygons()
|
||||
{
|
||||
if ( nContourLevels > 2 )
|
||||
{
|
||||
if ( legendConfig()->mappingMode() == RimRegularLegendConfig::MappingType::LINEAR_DISCRETE ||
|
||||
legendConfig()->mappingMode() == RimRegularLegendConfig::MappingType::LINEAR_CONTINUOUS )
|
||||
{
|
||||
const int fudgeFactor = 0.01;
|
||||
// Adjust contour levels slightly to avoid weird visual artifacts due to numerical error.
|
||||
contourLevels.front() -= fudgeFactor * ( contourLevels.back() - contourLevels.front() );
|
||||
contourLevels.back() += fudgeFactor * ( contourLevels.back() - contourLevels.front() );
|
||||
}
|
||||
else
|
||||
{
|
||||
contourLevels.front() *= 0.5;
|
||||
}
|
||||
const size_t N = contourLevels.size();
|
||||
// Adjust contour levels slightly to avoid weird visual artifacts due to numerical error.
|
||||
double fudgeFactor = 1.0e-3;
|
||||
double fudgeAmountMin = fudgeFactor * ( contourLevels[1] - contourLevels[0] );
|
||||
double fudgeAmountMax = fudgeFactor * ( contourLevels[N - 1u] - contourLevels[N - 2u] );
|
||||
|
||||
contourLevels.front() += fudgeAmountMin;
|
||||
contourLevels.back() -= fudgeAmountMax;
|
||||
|
||||
double simplifyEpsilon = m_smoothContourLines() ? 5.0e-2 * sampleSpacing() : 1.0e-3 * sampleSpacing();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user