diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-09-26 14:21:11 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-09-26 14:22:37 +0300 |
commit | 9d0495cae3181f2caf52235df9a4fb81b48789c1 (patch) | |
tree | 630f86c4e1818b78d76dd195aef8c4517dda432c /src/datavisualization/engine/surface3drenderer.cpp | |
parent | 48f8fc6a63a25970c2fac66ae6a201d67fed2f9d (diff) |
Fixed ball positioning when surface scaled
Scaling taked into account on normalization.
Task-number: QTRD-2330
Change-Id: Ib3cf89693e8aa3a0b939f2974fd74007015090c7
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surface3drenderer.cpp')
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 9a95805f..0c234910 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -1819,20 +1819,21 @@ void Surface3DRenderer::surfacePointSelected(int id) QVector3D pos; if (m_cachedSelectionMode == QDataVis::ModeSliceRow) { pos = normalize(float(column), value, 0.0f); - pos += QVector3D(m_surfaceOffsetX, 0.0f, -1.0f); - m_selectionPointer->setScaling(QVector3D(m_surfaceScaleX, 1.0f, sliceZScale)); + pos *= QVector3D(m_surfaceScaleX, 1.0f, 0.0f); + pos += QVector3D(m_surfaceOffsetX, 0.0f, 0.0f); m_selectionPointer->updateBoundingRect(m_sliceViewPort); m_selectionPointer->updateSliceData(true, m_autoScaleAdjustment); } else if (m_cachedSelectionMode == QDataVis::ModeSliceColumn) { - pos = normalize(float(row), value, 0.0f); - pos += QVector3D(m_surfaceOffsetZ, 0.0f, -1.0f); - m_selectionPointer->setScaling(QVector3D(m_surfaceScaleZ, 1.0f, sliceZScale)); + pos = normalize(0.0f, value, float(row)); + pos.setX(-pos.z()); + pos *= QVector3D(m_surfaceScaleZ, 1.0f, 0.0f); + pos += QVector3D(-m_surfaceOffsetZ, 0.0f, 0.0f); m_selectionPointer->updateBoundingRect(m_sliceViewPort); m_selectionPointer->updateSliceData(true, m_autoScaleAdjustment); } else { pos = normalize(float(column), value, float(row)); + pos *= QVector3D(m_surfaceScaleX, 1.0f, m_surfaceScaleZ);; pos += QVector3D(m_surfaceOffsetX, 0.0f, m_surfaceOffsetZ); - m_selectionPointer->setScaling(QVector3D(m_surfaceScaleX, 1.0f, m_surfaceScaleZ)); m_selectionPointer->updateBoundingRect(m_mainViewPort); m_selectionPointer->updateSliceData(false, m_autoScaleAdjustment); } |