diff options
Diffstat (limited to 'src/gui/math3d/qquaternion.h')
-rw-r--r-- | src/gui/math3d/qquaternion.h | 19 |
1 files changed, 19 insertions, 0 deletions
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) |