summaryrefslogtreecommitdiffstats
path: root/tests/directional
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-06 14:00:25 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-06 14:23:31 +0200
commit811be6f81b2e8c4d9d23cff5b4287c8a5dc86fc3 (patch)
tree549f2a46531c853893e31083a12d3729d07c4a86 /tests/directional
parente91237b54c2f58eaa8a2ce36bf016e2d8e8588f2 (diff)
Change rotations to use angle and vector in APIs
Quaternions are pain in the behind to use, especially in QML, so change them to angle + vector combinations. Change-Id: I25eb5ea92deaf3a079e2e193cce2e8de89f3c3c4 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests/directional')
-rw-r--r--tests/directional/main.cpp16
-rw-r--r--tests/directional/scatterdatamodifier.cpp13
2 files changed, 7 insertions, 22 deletions
diff --git a/tests/directional/main.cpp b/tests/directional/main.cpp
index f4871a70..2b077b97 100644
--- a/tests/directional/main.cpp
+++ b/tests/directional/main.cpp
@@ -32,11 +32,9 @@
int main(int argc, char **argv)
{
- //! [0]
QApplication app(argc, argv);
Q3DScatter *graph = new Q3DScatter();
QWidget *container = QWidget::createWindowContainer(graph);
- //! [0]
QSize screenSize = graph->screen()->size();
container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
@@ -44,17 +42,14 @@ int main(int argc, char **argv)
container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
container->setFocusPolicy(Qt::StrongFocus);
- //! [1]
QWidget *widget = new QWidget;
QHBoxLayout *hLayout = new QHBoxLayout(widget);
QVBoxLayout *vLayout = new QVBoxLayout();
hLayout->addWidget(container, 1);
hLayout->addLayout(vLayout);
- //! [1]
widget->setWindowTitle(QStringLiteral("Directional scatter"));
- //! [4]
QComboBox *themeList = new QComboBox(widget);
themeList->addItem(QStringLiteral("Qt"));
themeList->addItem(QStringLiteral("Primary Colors"));
@@ -79,7 +74,7 @@ int main(int argc, char **argv)
cameraButton->setText(QStringLiteral("Change camera preset"));
QPushButton *toggleRotationButton = new QPushButton(widget);
- toggleRotationButton->setText(QStringLiteral("Toggle rotation"));
+ toggleRotationButton->setText(QStringLiteral("Toggle animation"));
QCheckBox *backgroundCheckBox = new QCheckBox(widget);
backgroundCheckBox->setText(QStringLiteral("Show background"));
@@ -101,9 +96,7 @@ int main(int argc, char **argv)
QFontComboBox *fontList = new QFontComboBox(widget);
fontList->setCurrentFont(QFont("Arial"));
- //! [4]
- //! [5]
vLayout->addWidget(labelButton, 0, Qt::AlignTop);
vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
vLayout->addWidget(toggleRotationButton, 0, Qt::AlignTop);
@@ -117,13 +110,9 @@ int main(int argc, char **argv)
vLayout->addWidget(shadowQuality);
vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
vLayout->addWidget(fontList, 1, Qt::AlignTop);
- //! [5]
- //! [2]
ScatterDataModifier *modifier = new ScatterDataModifier(graph);
- //! [2]
- //! [6]
QObject::connect(cameraButton, &QPushButton::clicked, modifier,
&ScatterDataModifier::changePresetCamera);
QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier,
@@ -159,12 +148,9 @@ int main(int argc, char **argv)
QObject::connect(modifier, &ScatterDataModifier::fontChanged, fontList,
&QFontComboBox::setCurrentFont);
- //! [6]
itemStyleList->setCurrentIndex(0);
- //! [3]
widget->show();
return app.exec();
- //! [3]
}
diff --git a/tests/directional/scatterdatamodifier.cpp b/tests/directional/scatterdatamodifier.cpp
index 96a7b975..3735e14c 100644
--- a/tests/directional/scatterdatamodifier.cpp
+++ b/tests/directional/scatterdatamodifier.cpp
@@ -32,7 +32,7 @@ const int numberOfCols = 8;
const int numberOfRows = 8;
const float limit = 8.0f;
const float PI = 3.14159f;
-//#define HEDGEHOG
+#define HEDGEHOG
ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
: m_graph(scatter),
@@ -111,7 +111,8 @@ void ScatterDataModifier::addData()
#endif
ptrToDataArray->setPosition(QVector3D(x, y, z));
- ptrToDataArray->setRotation(rotation);
+ ptrToDataArray->setRotationAxis(rotation.vector());
+ ptrToDataArray->setRotationAngle(qAcos(rotation.scalar()) * 360.0f / M_PI);
ptrToDataArray++;
}
}
@@ -172,15 +173,13 @@ void ScatterDataModifier::triggerRotation()
if (m_graph->seriesList().size()) {
int selectedIndex = m_graph->seriesList().at(0)->selectedItem();
if (selectedIndex != QScatter3DSeries::invalidSelectionIndex()) {
- static float itemAngle = 0.0f;
QScatterDataItem item(*(m_graph->seriesList().at(0)->dataProxy()->itemAt(selectedIndex)));
- QQuaternion itemRotation = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, itemAngle++);
- item.setRotation(itemRotation);
+ item.setRotationAngle(item.rotationAngle() + 1);
m_graph->seriesList().at(0)->dataProxy()->setItem(selectedIndex, item);
} else {
static float seriesAngle = 0.0f;
- QQuaternion rotation = QQuaternion::fromAxisAndAngle(1.0f, 1.0f, 1.0f, seriesAngle++);
- m_graph->seriesList().at(0)->setMeshRotation(rotation);
+ m_graph->seriesList().at(0)->setMeshRotationAxis(QVector3D(1.0f, 1.0f, 1.0f));
+ m_graph->seriesList().at(0)->setMeshRotationAngle(seriesAngle++);
}
}
}