From 5d784deb71edd1e6584cd2f118d27dd3be2da5e6 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 9 Feb 2015 17:50:25 +0400 Subject: [QQuaternion] Introduce toAxisAndAngle() This operation is the exact opposite to QQuaternion::fromAxisAndAngle() (so that it is a way to extract the axis and angle values suitable to create the same quaternion via QQuaternion::fromAxisAndAngle()). Change-Id: I41fda58f5fb2b867cccd6b2faf58ab671fa070da Reviewed-by: Laszlo Agocs --- .../auto/gui/math3d/qquaternion/tst_qquaternion.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tests/auto/gui/math3d') diff --git a/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp b/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp index f1e91da372..59dcd7a015 100644 --- a/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp +++ b/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp @@ -721,11 +721,31 @@ void tst_QQuaternion::fromAxisAndAngle() QVERIFY(qFuzzyCompare(answer.z(), result.z())); QVERIFY(qFuzzyCompare(answer.scalar(), result.scalar())); + { + QVector3D answerAxis; + float answerAngle; + answer.toAxisAndAngle(&answerAxis, &answerAngle); + QVERIFY(qFuzzyCompare(answerAxis.x(), vector.x())); + QVERIFY(qFuzzyCompare(answerAxis.y(), vector.y())); + QVERIFY(qFuzzyCompare(answerAxis.z(), vector.z())); + QVERIFY(qFuzzyCompare(answerAngle, angle)); + } + answer = QQuaternion::fromAxisAndAngle(x1, y1, z1, angle); QVERIFY(qFuzzyCompare(answer.x(), result.x())); QVERIFY(qFuzzyCompare(answer.y(), result.y())); QVERIFY(qFuzzyCompare(answer.z(), result.z())); QVERIFY(qFuzzyCompare(answer.scalar(), result.scalar())); + + { + float answerAxisX, answerAxisY, answerAxisZ; + float answerAngle; + answer.toAxisAndAngle(&answerAxisX, &answerAxisY, &answerAxisZ, &answerAngle); + QVERIFY(qFuzzyCompare(answerAxisX, vector.x())); + QVERIFY(qFuzzyCompare(answerAxisY, vector.y())); + QVERIFY(qFuzzyCompare(answerAxisZ, vector.z())); + QVERIFY(qFuzzyCompare(answerAngle, angle)); + } } // Test quaternion convertion to and from rotation matrix. -- cgit v1.2.3