From 61c84e2d9c46de40d22f6fafbdd23d4015025516 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 7 Feb 2014 15:30:53 +0200 Subject: Mostly revert the rotations refactor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quaternions are actually easier to use in most use cases. Added some convenience functionality for QML to enable using axis/angle combinations, too. Change-Id: I61c76e0967b4808aa9adaf43dfe6f4596c9ce353 Reviewed-by: Tomi Korpipää --- tests/barstest/chart.cpp | 2 +- tests/directional/scatterdatamodifier.cpp | 11 ++++++----- tests/qmlcamera/qml/qmlcamera/Data.qml | 2 +- tests/qmldynamicdata/qml/qmldynamicdata/main.qml | 22 ++++++++++------------ 4 files changed, 18 insertions(+), 19 deletions(-) (limited to 'tests') diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index df71a0ed..e7a0e2ca 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -1096,7 +1096,7 @@ void GraphModifier::triggerRotation() // Rotate the first series instead static float seriesAngle = 0.0f; if (m_graph->seriesList().size()) - m_graph->seriesList().at(0)->setMeshRotationAngle(seriesAngle++); + m_graph->seriesList().at(0)->setMeshAngle(seriesAngle++); } } diff --git a/tests/directional/scatterdatamodifier.cpp b/tests/directional/scatterdatamodifier.cpp index 3735e14c..1422cebb 100644 --- a/tests/directional/scatterdatamodifier.cpp +++ b/tests/directional/scatterdatamodifier.cpp @@ -111,8 +111,7 @@ void ScatterDataModifier::addData() #endif ptrToDataArray->setPosition(QVector3D(x, y, z)); - ptrToDataArray->setRotationAxis(rotation.vector()); - ptrToDataArray->setRotationAngle(qAcos(rotation.scalar()) * 360.0f / M_PI); + ptrToDataArray->setRotation(rotation); ptrToDataArray++; } } @@ -173,13 +172,15 @@ 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))); - item.setRotationAngle(item.rotationAngle() + 1); + QQuaternion itemRotation = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, itemAngle++); + item.setRotation(itemRotation); m_graph->seriesList().at(0)->dataProxy()->setItem(selectedIndex, item); } else { static float seriesAngle = 0.0f; - m_graph->seriesList().at(0)->setMeshRotationAxis(QVector3D(1.0f, 1.0f, 1.0f)); - m_graph->seriesList().at(0)->setMeshRotationAngle(seriesAngle++); + QQuaternion rotation = QQuaternion::fromAxisAndAngle(1.0f, 1.0f, 1.0f, seriesAngle++); + m_graph->seriesList().at(0)->setMeshRotation(rotation); } } } diff --git a/tests/qmlcamera/qml/qmlcamera/Data.qml b/tests/qmlcamera/qml/qmlcamera/Data.qml index ba920ef9..bab6bf78 100644 --- a/tests/qmlcamera/qml/qmlcamera/Data.qml +++ b/tests/qmlcamera/qml/qmlcamera/Data.qml @@ -38,7 +38,7 @@ Item { dataProxy: modelProxy itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel" - onMeshRotationAngleChanged: console.log("angle changed:", angle) + onMeshAngleChanged: console.log("angle changed:", angle) } ListModel { diff --git a/tests/qmldynamicdata/qml/qmldynamicdata/main.qml b/tests/qmldynamicdata/qml/qmldynamicdata/main.qml index 03bf4b2d..ff5ea16d 100644 --- a/tests/qmldynamicdata/qml/qmldynamicdata/main.qml +++ b/tests/qmldynamicdata/qml/qmldynamicdata/main.qml @@ -28,8 +28,8 @@ Item { ListModel { id: graphModel - ListElement{ xPos: 0.0; yPos: 0.0; zPos: 0.0; rotationAxis: "1.0,1.0,1.0"; rotationAngle: 45 } - ListElement{ xPos: 1.0; yPos: 1.0; zPos: 1.0; rotationAxis: "1.0,1.0,1.0"; rotationAngle: 45 } + ListElement{ xPos: 0.0; yPos: 0.0; zPos: 0.0; rotation: "0.92388, 0.220942, 0.220942, 0.220942"} + ListElement{ xPos: 1.0; yPos: 1.0; zPos: 1.0; rotation: "@45,1.0,1.0,1.0" } } Timer { @@ -38,24 +38,23 @@ Item { running: true repeat: true property bool isIncreasing: true + property real rotationAngle: 0 - function generateAngle() { - return Math.random() * 360 - } - - function generateAxis() { - return Math.random() + "," + Math.random() + "," + Math.random() + function generateQuaternion() { + return "@" + Math.random() * 360 + "," + Math.random() + "," + Math.random() + "," + Math.random() } function appendRow() { graphModel.append({"xPos": Math.random(), "yPos": Math.random(), "zPos": Math.random(), - "rotationAxis": generateAxis(), - "rotationAngle": generateAngle()}); + "rotation": generateQuaternion() + }); } onTriggered: { + rotationAngle = rotationAngle + 1 + scatterSeries.setMeshAxisAndAngle(Qt.vector3d(1,1,1), rotationAngle) if (isIncreasing) { appendRow() appendRow() @@ -130,8 +129,7 @@ Item { xPosRole: "xPos" yPosRole: "yPos" zPosRole: "zPos" - rotationAxisRole: "rotationAxis" - rotationAngleRole: "rotationAngle" + rotationRole: "rotation" } } } -- cgit v1.2.3