summaryrefslogtreecommitdiffstats
path: root/examples/surfacechart
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-07-22 16:51:18 +0300
committerMika Salmela <mika.salmela@digia.com>2013-07-22 16:52:38 +0300
commit51d6d0258c8d1fe0608045986792ac5601f8613f (patch)
tree95956d8f7e2f61ce2a56fc88ee094b51047078b9 /examples/surfacechart
parent2ba572295f102ad06ae95ec676c064909775011f (diff)
Fancy curve example and other stuff.
Change-Id: Id090ed0bedb3bec96ab6ba64b9af8205c1998f12 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'examples/surfacechart')
-rw-r--r--examples/surfacechart/chartmodifier.cpp65
-rw-r--r--examples/surfacechart/chartmodifier.h12
-rw-r--r--examples/surfacechart/main.cpp62
3 files changed, 125 insertions, 14 deletions
diff --git a/examples/surfacechart/chartmodifier.cpp b/examples/surfacechart/chartmodifier.cpp
index 0c1980ab..a78b2d2e 100644
--- a/examples/surfacechart/chartmodifier.cpp
+++ b/examples/surfacechart/chartmodifier.cpp
@@ -40,12 +40,16 @@
#include "chartmodifier.h"
+#include <qmath.h>
+
#include <QDebug>
QT_DATAVIS3D_USE_NAMESPACE
ChartModifier::ChartModifier(Q3DSurface *chart)
- : m_chart(chart)
+ : m_chart(chart),
+ m_xCount(10),
+ m_zCount(10)
{
}
@@ -65,3 +69,62 @@ void ChartModifier::toggleSurfaceGrid(bool enable)
qDebug() << "ChartModifier::toggleSurfaceGrid" << enable;
m_chart->setSurfaceGrid(enable);
}
+
+void ChartModifier::toggleSqrtSin(bool enable)
+{
+ qreal biggest = -9999.0;
+ qreal smallest = 9999.0;
+ QList<qreal> series;
+
+ if (enable) {
+ qDebug() << "Create Sqrt&Sin surface, (" << m_xCount << ", " << m_zCount << ")";
+
+ qreal stepZ = 16.0 / qreal(m_zCount);
+ qreal stepX = 16.0 / qreal(m_xCount);
+
+ for (qreal i = -8.0 + stepZ / 2.0 ; i < 8.0 ; i += stepZ) {
+ for (qreal j = -8.0 + stepX / 2.0; j < 8.0; j += stepX) {
+ qreal R = qSqrt(i*i + j*j) + 0.01;
+ qreal y = sin(R)/R + 1.0;
+ series << y;
+ if (y > biggest) biggest = y;
+ if (y < smallest) smallest = y;
+ }
+ }
+
+ m_chart->setTickCount(4, 0.5f);
+ m_chart->appendSeries(series, m_xCount, m_zCount);
+
+ qDebug() << "biggest = " << biggest << ", smallest = " << smallest;
+ } else {
+ qDebug() << "Remove surface";
+ }
+}
+
+void ChartModifier::toggleGridSliderLock(bool enable)
+{
+ m_gridSlidersLocked = enable;
+ if (m_gridSlidersLocked) {
+ m_gridSliderZ->setEnabled(false);
+ m_gridSliderZ->setValue(m_gridSliderX->value());
+ } else {
+ m_gridSliderZ->setEnabled(true);
+ }
+}
+
+void ChartModifier::adjustXCount(int count)
+{
+ m_xCount = count;
+ if (m_gridSlidersLocked)
+ m_gridSliderZ->setValue(count);
+
+ qDebug() << "X count = " << count;
+}
+
+void ChartModifier::adjustZCount(int count)
+{
+ m_zCount = count;
+
+ qDebug() << "Z count = " << count;
+}
+
diff --git a/examples/surfacechart/chartmodifier.h b/examples/surfacechart/chartmodifier.h
index e29699d8..8b84efbb 100644
--- a/examples/surfacechart/chartmodifier.h
+++ b/examples/surfacechart/chartmodifier.h
@@ -42,6 +42,7 @@
#define CHARTMODIFIER_H
#include <Q3DSurface>
+#include <QSlider>
using namespace QtDataVis3D;
@@ -54,9 +55,20 @@ public:
void toggleSmooth(bool enabled);
void toggleSurfaceGrid(bool enable);
+ void toggleSqrtSin(bool enable);
+ void toggleGridSliderLock(bool enable);
+ void setGridSliderX(QSlider *slider) { m_gridSliderX = slider; }
+ void setGridSliderZ(QSlider *slider) { m_gridSliderZ = slider; }
+ void adjustXCount(int count);
+ void adjustZCount(int count);
private:
Q3DSurface *m_chart;
+ QSlider *m_gridSliderX;
+ QSlider *m_gridSliderZ;
+ bool m_gridSlidersLocked;
+ int m_xCount;
+ int m_zCount;
};
#endif // CHARTMODIFIER_H
diff --git a/examples/surfacechart/main.cpp b/examples/surfacechart/main.cpp
index fdfa99a6..474f273b 100644
--- a/examples/surfacechart/main.cpp
+++ b/examples/surfacechart/main.cpp
@@ -77,10 +77,6 @@ int main(int argc, char *argv[])
hLayout->addWidget(container, 1);
hLayout->addLayout(vLayout);
- QPushButton *someButton = new QPushButton(widget);
- someButton->setText(QStringLiteral("Press me"));
- someButton->setEnabled(true);
-
QCheckBox *smoothCB = new QCheckBox(widget);
smoothCB->setText(QStringLiteral("Smooth "));
smoothCB->setChecked(surfaceChart->smoothSurface());
@@ -89,26 +85,66 @@ int main(int argc, char *argv[])
surfaceGridCB->setText(QStringLiteral("Surface Grid"));
surfaceGridCB->setChecked(true);
+ QCheckBox *sqrtSinCB = new QCheckBox(widget);
+ sqrtSinCB->setText(QStringLiteral("Sqrt & Sin"));
+ sqrtSinCB->setChecked(false);
+
+ QCheckBox *gridSlidersLockCB = new QCheckBox(widget);
+ gridSlidersLockCB->setText(QStringLiteral("Lock"));
+ gridSlidersLockCB->setChecked(false);
+
+ QSlider *gridSliderX = new QSlider(Qt::Horizontal, widget);
+ gridSliderX->setTickInterval(1);
+ gridSliderX->setMinimum(2);
+ gridSliderX->setValue(10);
+ gridSliderX->setMaximum(200);
+ gridSliderX->setEnabled(true);
+ QSlider *gridSliderZ = new QSlider(Qt::Horizontal, widget);
+ gridSliderZ->setTickInterval(1);
+ gridSliderZ->setMinimum(2);
+ gridSliderZ->setValue(10);
+ gridSliderZ->setMaximum(200);
+ gridSliderZ->setEnabled(true);
+
+
// Add controls to the layout
vLayout->addWidget(smoothCB);
vLayout->addWidget(surfaceGridCB);
- vLayout->addWidget(someButton);
+ vLayout->addWidget(new QLabel(QStringLiteral("Select surface")));
+ vLayout->addWidget(sqrtSinCB);
+ vLayout->addWidget(new QLabel(QStringLiteral("Adjust sample count")));
+ vLayout->addWidget(gridSlidersLockCB);
+ vLayout->addWidget(gridSliderX);
+ vLayout->addWidget(gridSliderZ);
widget->show();
ChartModifier *modifier = new ChartModifier(surfaceChart);
+ // Connect controls to slots on modifier
QObject::connect(smoothCB, &QCheckBox::stateChanged,
modifier, &ChartModifier::toggleSmooth);
QObject::connect(surfaceGridCB, &QCheckBox::stateChanged,
modifier, &ChartModifier::toggleSurfaceGrid);
-
- QList<qreal> lowList;
- lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 15.0;
- lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0;
- lowList << 105.0 << 170.0 << 215.0 << 240.0 << 245.0 << 240.0 << 215.0 << 170.0 << 105.0;
- lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0;
- lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 16.1;
+ QObject::connect(sqrtSinCB, &QCheckBox::stateChanged,
+ modifier, &ChartModifier::toggleSqrtSin);
+ QObject::connect(gridSlidersLockCB, &QCheckBox::stateChanged,
+ modifier, &ChartModifier::toggleGridSliderLock);
+ QObject::connect(gridSliderX, &QSlider::valueChanged,
+ modifier, &ChartModifier::adjustXCount);
+ QObject::connect(gridSliderZ, &QSlider::valueChanged,
+ modifier, &ChartModifier::adjustZCount);
+
+ modifier->setGridSliderZ(gridSliderZ);
+ modifier->setGridSliderX(gridSliderX);
+ modifier->toggleGridSliderLock(gridSlidersLockCB->checkState());
+
+// QList<qreal> lowList;
+// lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 15.0;
+// lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0;
+// lowList << 105.0 << 170.0 << 215.0 << 240.0 << 245.0 << 240.0 << 215.0 << 170.0 << 105.0;
+// lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0;
+// lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 16.1;
// lowList << 15.0 << 65.0 << 105.0 << 65.0 << 15.0;
// lowList << 35.0 << 105.0 << 170.0 << 105.0 << 35;
@@ -120,7 +156,7 @@ int main(int argc, char *argv[])
// lowList << 35.0 << 105.0 << 170.0 << 105.0 << 35.0;
// lowList << 15.0 << 65.0 << 105.0 << 65.0 << 16.1;
- surfaceChart->appendSeries(lowList);
+// surfaceChart->appendSeries(lowList, 9, 5);
// QList<qreal> topList;
// topList << 2.1 << 2.2;