summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/math3d/qquaternion.cpp12
-rw-r--r--src/gui/math3d/qquaternion.h5
2 files changed, 17 insertions, 0 deletions
diff --git a/src/gui/math3d/qquaternion.cpp b/src/gui/math3d/qquaternion.cpp
index 2fb192dab4..6e9d17d1e1 100644
--- a/src/gui/math3d/qquaternion.cpp
+++ b/src/gui/math3d/qquaternion.cpp
@@ -748,6 +748,18 @@ QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
\sa QQuaternion::operator/=()
*/
+#ifndef QT_NO_VECTOR3D
+
+/*!
+ \fn QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
+ \since 5.5
+ \relates QQuaternion
+
+ Rotates a vector \a vec with a quaternion \a quaternion to produce a new vector in 3D space.
+*/
+
+#endif
+
/*!
\fn bool qFuzzyCompare(const QQuaternion& q1, const QQuaternion& q2)
\relates QQuaternion
diff --git a/src/gui/math3d/qquaternion.h b/src/gui/math3d/qquaternion.h
index d5300f96df..a02c37ce1d 100644
--- a/src/gui/math3d/qquaternion.h
+++ b/src/gui/math3d/qquaternion.h
@@ -308,6 +308,11 @@ inline QVector3D QQuaternion::vector() const
return QVector3D(xp, yp, zp);
}
+inline QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
+{
+ return quaternion.rotatedVector(vec);
+}
+
inline void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const
{
float aX, aY, aZ;