diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-12-03 14:00:23 +0200 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-12-03 14:06:59 +0200 |
commit | 344870fb79e647b87aa79b9433eef8237c901e10 (patch) | |
tree | f0ccaa5991d9f0304bc6f6f91ce3ffd45232384d /tests/surfacetest/graphmodifier.cpp | |
parent | 2af35db1a112c49991a80f48e3cd8d8814deb321 (diff) |
Better proxy API for surface
Part 2, item change. More is on the way.
Change-Id: Ic41f3a90b5a47502b741391ace990117ef2eaf80
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'tests/surfacetest/graphmodifier.cpp')
-rw-r--r-- | tests/surfacetest/graphmodifier.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/tests/surfacetest/graphmodifier.cpp b/tests/surfacetest/graphmodifier.cpp index 666f4741..11e651a3 100644 --- a/tests/surfacetest/graphmodifier.cpp +++ b/tests/surfacetest/graphmodifier.cpp @@ -427,7 +427,7 @@ void GraphModifier::changeRow() void GraphModifier::changeRows() { if (m_activeSample == GraphModifier::SqrtSin) { - qDebug() << "Generating new values to 3 rows from randon pos"; + qDebug() << "Generating new values to 3 rows from random pos"; float minX = -10.0f; float maxX = 10.0f; @@ -457,6 +457,43 @@ void GraphModifier::changeRows() } } +void GraphModifier::changeItem() +{ + if (m_activeSample == GraphModifier::SqrtSin) { + qDebug() << "Generating new values for an item at random pos"; + float minX = -10.0f; + float maxX = 10.0f; + float minZ = -10.0f; + float maxZ = 10.0f; + float stepX = (maxX - minX) / float(m_xCount - 1); + float stepZ = (maxZ - minZ) / float(m_zCount - 1); + float i = float(rand() % m_zCount); + float j = float(rand() % m_xCount); + + float x = qMin(maxX, (j * stepX + minX)); + float z = qMin(maxZ, (i * stepZ + minZ)); + float R = qSqrt(x * x + z * z) + 0.01f; + float y = (qSin(R) / R + 0.24f) * 1.61f + 1.2f; + QSurfaceDataItem newItem(QVector3D(x, y, z)); + + m_theSeries->dataProxy()->setItem(int(i), int(j), newItem); + } else { + qDebug() << "Change row function active only for SqrtSin"; + } +} + +void GraphModifier::changeMultipleRows() +{ + for (int i = 0; i < 3; i++) + changeRow(); +} + +void GraphModifier::changeMultipleItem() +{ + for (int i = 0; i < 3; i++) + changeItem(); +} + void GraphModifier::changeMesh() { static int model = 0; |