From 88142e73d5e062cf26638511a42140b59ef736cc Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 9 Feb 2015 17:13:20 +0400 Subject: [QQuaternion] Introduce to/from euler angles conversion routines Change-Id: I26c0a9d1ce9258048cf44eed5b5238920c2317b1 Reviewed-by: Laszlo Agocs --- src/gui/math3d/qquaternion.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/gui/math3d/qquaternion.h') diff --git a/src/gui/math3d/qquaternion.h b/src/gui/math3d/qquaternion.h index eb835ef806..4a87b63d25 100644 --- a/src/gui/math3d/qquaternion.h +++ b/src/gui/math3d/qquaternion.h @@ -122,6 +122,13 @@ public: static QQuaternion fromAxisAndAngle (float x, float y, float z, float angle); +#ifndef QT_NO_VECTOR3D + inline QVector3D toEulerAngles() const; + static inline QQuaternion fromEulerAngles(const QVector3D &eulerAngles); +#endif + void toEulerAngles(float *pitch, float *yaw, float *roll) const; + static QQuaternion fromEulerAngles(float pitch, float yaw, float roll); + QMatrix3x3 toRotationMatrix() const; static QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3); @@ -308,6 +315,18 @@ inline void QQuaternion::toAxisAndAngle(QVector3D *axis, float *angle) const *axis = QVector3D(aX, aY, aZ); } +inline QVector3D QQuaternion::toEulerAngles() const +{ + float pitch, yaw, roll; + toEulerAngles(&pitch, &yaw, &roll); + return QVector3D(pitch, yaw, roll); +} + +inline QQuaternion QQuaternion::fromEulerAngles(const QVector3D &eulerAngles) +{ + return QQuaternion::fromEulerAngles(eulerAngles.x(), eulerAngles.y(), eulerAngles.z()); +} + #endif inline void QQuaternion::setVector(float aX, float aY, float aZ) -- cgit v1.2.3