diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-24 10:21:09 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-24 10:31:47 +0300 |
commit | 673dac570692cbd8b1c6180682e4b2f36dd61a02 (patch) | |
tree | 160a2c5afdb007ea3539ca66514517e4c0a6bfa8 /src/datavis3d | |
parent | 42b1f6fbb3ff6a1ffc78893dcf74f33a913fd69a (diff) |
Scene autoscaling improved
Change-Id: I0be0cfdf4284e76d5c088f9a0b2c96500876abfe
Change-Id: I0be0cfdf4284e76d5c088f9a0b2c96500876abfe
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavis3d')
-rw-r--r-- | src/datavis3d/engine/q3dbars.cpp | 30 | ||||
-rw-r--r-- | src/datavis3d/engine/q3dbars_p.h | 4 |
2 files changed, 12 insertions, 22 deletions
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp index 2d3e0d2f..6170f8eb 100644 --- a/src/datavis3d/engine/q3dbars.cpp +++ b/src/datavis3d/engine/q3dbars.cpp @@ -554,9 +554,9 @@ void Q3DBars::drawScene() barPos = (bar + 1) * (d_ptr->m_barSpacing.width()); rowPos = (row + 1) * (d_ptr->m_barSpacing.height()); - modelMatrix.translate((d_ptr->m_rowWidth - barPos) / d_ptr->m_scaleFactorX, + modelMatrix.translate((d_ptr->m_rowWidth - barPos) / d_ptr->m_scaleFactor, barHeight - d_ptr->m_yAdjustment, - (d_ptr->m_columnDepth - rowPos) / d_ptr->m_scaleFactorZ + (d_ptr->m_columnDepth - rowPos) / d_ptr->m_scaleFactor + zComp); modelMatrix.scale(QVector3D(d_ptr->m_scaleX, barHeight, d_ptr->m_scaleZ)); @@ -685,9 +685,9 @@ void Q3DBars::drawScene() // TODO: Laske rivi- ja sarakelabelien paikat (sijainnit: min-1 ja max+1) ja pistä johonki talteen? barPos = (bar + 1) * (d_ptr->m_barSpacing.width()); rowPos = (row + 1) * (d_ptr->m_barSpacing.height()); - modelMatrix.translate((d_ptr->m_rowWidth - barPos) / d_ptr->m_scaleFactorX, + modelMatrix.translate((d_ptr->m_rowWidth - barPos) / d_ptr->m_scaleFactor, barHeight - d_ptr->m_yAdjustment, - (d_ptr->m_columnDepth - rowPos) / d_ptr->m_scaleFactorZ + zComp); + (d_ptr->m_columnDepth - rowPos) / d_ptr->m_scaleFactor + zComp); modelMatrix.scale(QVector3D(d_ptr->m_scaleX, barHeight, d_ptr->m_scaleZ)); MVPMatrix = projectionMatrix * viewMatrix * modelMatrix; @@ -821,9 +821,9 @@ void Q3DBars::drawScene() QMatrix4x4 MVPMatrix; modelMatrix.translate(0.0f, 1.0f - d_ptr->m_yAdjustment, zComp); - modelMatrix.scale(QVector3D(d_ptr->m_rowWidth * d_ptr->m_sceneScale, + modelMatrix.scale(QVector3D(d_ptr->m_rowWidth / d_ptr->m_scaleFactor, 1.0f, - d_ptr->m_columnDepth * d_ptr->m_sceneScale)); + d_ptr->m_columnDepth / d_ptr->m_scaleFactor)); modelMatrix.rotate(backgroundRotation, 0.0f, 1.0f, 0.0f); MVPMatrix = projectionMatrix * viewMatrix * modelMatrix; @@ -1475,9 +1475,7 @@ Q3DBarsPrivate::Q3DBarsPrivate(Q3DBars *q) m_maxDimension(0), m_scaleX(0), m_scaleZ(0), - m_scaleFactorX(0), - m_scaleFactorZ(0), - m_sceneScale(0), + m_scaleFactor(0), m_maxSceneSize(40.0), m_theme(new Theme()), m_isInitialized(false), @@ -1603,17 +1601,11 @@ void Q3DBarsPrivate::calculateSceneScalingFactors() m_maxDimension = qMax(m_rowWidth, m_columnDepth); m_scaleX = m_barThickness.width() / m_sampleCount.first * (m_maxSceneSize / m_maxDimension); m_scaleZ = m_barThickness.height() / m_sampleCount.first * (m_maxSceneSize / m_maxDimension); - m_sceneScale = qMin(m_scaleX, m_scaleZ); - GLfloat minThickness = qMin(m_barThickness.width(), m_barThickness.height()); - m_sceneScale = m_sceneScale / minThickness; - // TODO: This could be improved (we need only one scale factor, but we should probably check if we need to scale based on X or Z?) - m_scaleFactorX = m_sampleCount.first * (m_maxDimension / m_maxSceneSize); - //m_scaleFactorZ = m_sampleCount.second * (m_maxDimension / m_maxSceneSize); - m_scaleFactorZ = m_scaleFactorX; - //qDebug() << "m_scaleX" << m_scaleX << "m_scaleFactorX" << m_scaleFactorX; - //qDebug() << "m_scaleZ" << m_scaleZ << "m_scaleFactorZ" << m_scaleFactorZ; + m_scaleFactor = qMin((m_sampleCount.first * (m_maxDimension / m_maxSceneSize)), + (m_sampleCount.second * (m_maxDimension / m_maxSceneSize))); + //qDebug() << "m_scaleX" << m_scaleX << "m_scaleFactor" << m_scaleFactor; + //qDebug() << "m_scaleZ" << m_scaleZ << "m_scaleFactor" << m_scaleFactor; //qDebug() << "m_rowWidth:" << m_rowWidth << "m_columnDepth:" << m_columnDepth << "m_maxDimension:" << m_maxDimension; - //qDebug() << m_rowWidth * m_sceneScale << m_columnDepth * m_sceneScale; } void Q3DBarsPrivate::calculateHeightAdjustment(const QPair<GLfloat, GLfloat> &limits) diff --git a/src/datavis3d/engine/q3dbars_p.h b/src/datavis3d/engine/q3dbars_p.h index a4a20e12..a1964f6f 100644 --- a/src/datavis3d/engine/q3dbars_p.h +++ b/src/datavis3d/engine/q3dbars_p.h @@ -133,9 +133,7 @@ public: GLfloat m_maxDimension; GLfloat m_scaleX; GLfloat m_scaleZ; - GLfloat m_scaleFactorX; - GLfloat m_scaleFactorZ; - GLfloat m_sceneScale; + GLfloat m_scaleFactor; GLfloat m_maxSceneSize; Theme *m_theme; bool m_isInitialized; |