QQuaternion Class
La classe `QQuaternion` représente un quaternion composé d'un vecteur et d'un scalaire. En savoir plus...
| En-tête : | #include <QQuaternion> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
- Liste de tous les membres, y compris les membres hérités
- Membres obsolètes
- QQuaternion fait partie du module « Rendu 3D ».
Types publics
(since 6.11) struct | Axes |
(since 6.11) struct | Axis |
(since 6.11) struct | EulerAngles |
Fonctions publiques
| QQuaternion() | |
| QQuaternion(const QVector4D &vector) | |
| QQuaternion(float scalar, const QVector3D &vector) | |
| QQuaternion(float scalar, float xpos, float ypos, float zpos) | |
| QQuaternion | conjugated() const |
(since 6.11) QQuaternion::EulerAngles<float> | eulerAngles() const |
| void | getAxisAndAngle(float *x, float *y, float *z, float *angle) const |
| void | getAxisAndAngle(QVector3D *axis, float *angle) const |
| QQuaternion | inverted() const |
| bool | isIdentity() const |
| bool | isNull() const |
| float | length() const |
| float | lengthSquared() const |
| void | normalize() |
| QQuaternion | normalized() const |
| QVector3D | rotatedVector(const QVector3D &vector) const |
| float | scalar() const |
| void | setScalar(float scalar) |
| void | setVector(const QVector3D &vector) |
| void | setVector(float x, float y, float z) |
| void | setX(float x) |
| void | setY(float y) |
| void | setZ(float z) |
(since 6.11) QQuaternion::Axes | toAxes() const |
| QVector3D | toEulerAngles() const |
| QMatrix3x3 | toRotationMatrix() const |
| QVector4D | toVector4D() const |
| QVector3D | vector() const |
| float | x() const |
| float | y() const |
| float | z() const |
| operator QVariant() const | |
| QQuaternion & | operator*=(const QQuaternion &quaternion) |
| QQuaternion & | operator*=(float factor) |
| QQuaternion & | operator+=(const QQuaternion &quaternion) |
| QQuaternion & | operator-=(const QQuaternion &quaternion) |
| QQuaternion & | operator/=(float divisor) |
Membres publics statiques
| float | dotProduct(const QQuaternion &q1, const QQuaternion &q2) |
(since 6.11) QQuaternion | fromAxes(QQuaternion::Axes axes) |
| QQuaternion | fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis) |
| QQuaternion | fromAxisAndAngle(const QVector3D &axis, float angle) |
| QQuaternion | fromAxisAndAngle(float x, float y, float z, float angle) |
| QQuaternion | fromDirection(const QVector3D &direction, const QVector3D &up) |
| QQuaternion | fromEulerAngles(float pitch, float yaw, float roll) |
(since 6.11) QQuaternion | fromEulerAngles(QQuaternion::EulerAngles<float> angles) |
| QQuaternion | fromEulerAngles(const QVector3D &angles) |
| QQuaternion | fromRotationMatrix(const QMatrix3x3 &rot3x3) |
| QQuaternion | nlerp(const QQuaternion &q1, const QQuaternion &q2, float t) |
| QQuaternion | rotationTo(const QVector3D &from, const QVector3D &to) |
| QQuaternion | slerp(const QQuaternion &q1, const QQuaternion &q2, float t) |
Éléments non-membres associés
| bool | qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2) |
| bool | operator!=(const QQuaternion &q1, const QQuaternion &q2) |
| QQuaternion | operator*(const QQuaternion &q1, const QQuaternion &q2) |
| QVector3D | operator*(const QQuaternion &quaternion, const QVector3D &vec) |
| QQuaternion | operator*(const QQuaternion &quaternion, float factor) |
| QQuaternion | operator*(float factor, const QQuaternion &quaternion) |
| QQuaternion | operator+(const QQuaternion &q1, const QQuaternion &q2) |
| QQuaternion | operator-(const QQuaternion &q1, const QQuaternion &q2) |
| QQuaternion | operator-(const QQuaternion &quaternion) |
| QQuaternion | operator/(const QQuaternion &quaternion, float divisor) |
| QDataStream & | operator<<(QDataStream &stream, const QQuaternion &quaternion) |
| bool | operator==(const QQuaternion &q1, const QQuaternion &q2) |
| QDataStream & | operator>>(QDataStream &stream, QQuaternion &quaternion) |
Description détaillée
Les quaternions sont utilisés pour représenter les rotations dans l'espace 3D. Ils se composent d'un axe de rotation 3D spécifié par les coordonnées x, y et z, et d'un scalaire représentant l'angle de rotation.
Documentation des fonctions membres
[constexpr noexcept] QQuaternion::QQuaternion()
Crée un quaternion identité (1, 0, 0, 0), c'est-à-dire avec le vecteur (0, 0, 0) et le scalaire 1.
[explicit constexpr noexcept] QQuaternion::QQuaternion(const QVector4D &vector)
Construit un quaternion à partir des composantes de vector.
[constexpr noexcept] QQuaternion::QQuaternion(float scalar, const QVector3D &vector)
Crée un vecteur quaternion à partir des valeurs spécifiées vector et scalar.
Voir également vector() et scalar().
[constexpr noexcept] QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)
Crée un quaternion à partir du vecteur (xpos, ypos, zpos) et de scalar.
[constexpr noexcept] QQuaternion QQuaternion::conjugated() const
Renvoie le conjugué de ce quaternion, qui est (-x, -y, -z, scalaire).
[static constexpr noexcept] float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2)
Renvoie le produit scalaire de q1 et q2.
Voir également length().
[since 6.11] QQuaternion::EulerAngles<float> QQuaternion::eulerAngles() const
Renvoie les angles d'Euler (en degrés) correspondant à ce quaternion.
Cette fonction a été introduite dans Qt 6.11.
Voir également fromEulerAngles().
[static, since 6.11] QQuaternion QQuaternion::fromAxes(QQuaternion::Axes axes)
Construit le quaternion à partir des axes contenus dans ` axes`.
Remarque : les axes sont supposés être orthonormés.
Cette fonction a été introduite dans Qt 6.11.
Voir également ` toAxes()` et ` fromRotationMatrix()`.
[static] QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
Il s'agit d'une fonction surchargée.
[static] QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)
Crée un quaternion normalisé correspondant à une rotation de angle degrés autour de l'axis 3D spécifiée.
Voir également getAxisAndAngle().
[static] QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle)
Crée un quaternion normalisé correspondant à une rotation de angle degrés autour de l'axe 3D (x, y, z).
Voir également getAxisAndAngle().
[static] QQuaternion QQuaternion::fromDirection(const QVector3D &direction, const QVector3D &up)
Construit le quaternion à partir de la direction vers l'avant direction et de la direction vers le haut up spécifiées. Si la direction vers le haut n'a pas été spécifiée ou si les vecteurs vers l'avant et vers le haut sont colinéaires, une nouvelle direction vers le haut orthonormée sera générée.
Voir également fromAxes() et rotationTo().
[static] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)
Crée un quaternion correspondant à une rotation de roll degrés autour de l'axe z, de pitch degrés autour de l'axe x et de yaw degrés autour de l'axe y (dans cet ordre).
Voir également eulerAngles(), toEulerAngles() et fromEulerAngles(QQuaternion::EulerAngles<float>).
[static, since 6.11] QQuaternion QQuaternion::fromEulerAngles(QQuaternion::EulerAngles<float> angles)
Équivalent à
fromEulerAngles(angles.pitch, angles.yaw, angles.roll);Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.11.
Voir également eulerAngles(), toEulerAngles() et fromEulerAngles().
[static] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &angles)
Crée un quaternion correspondant à une rotation de angles: angles.z() degrés autour de l'axe z, angles.x() degrés autour de l'axe x et angles.y() degrés autour de l'axe y (dans cet ordre).
Il s'agit d'une fonction surchargée.
Voir également toEulerAngles().
[static] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
Crée un quaternion correspondant à la matrice de rotation rot3x3.
Remarque : si la matrice de rotation fournie n'est pas normalisée, le quaternion obtenu contiendra des informations de mise à l'échelle.
Voir également toRotationMatrix() et fromAxes().
void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const
Extrait un axe 3D (x, y, z) et un angle de rotation angle (en degrés) correspondant à ce quaternion.
x, y, z et angle doivent tous être des pointeurs valides et non de type «nullptr » ; sinon, le comportement est indéfini.
Voir également fromAxisAndAngle().
void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const
Extrait un axe 3D axis et un angle de rotation angle (en degrés) correspondant à ce quaternion.
axis et angle doivent tous deux être des pointeurs valides et nonnullptr s ; dans le cas contraire, le comportement est indéfini.
Il s’agit d’une fonction surchargée.
Voir également fromAxisAndAngle().
[constexpr noexcept] QQuaternion QQuaternion::inverted() const
Renvoie l'inverse de ce quaternion. Si ce quaternion est nul, un quaternion nul est renvoyé.
Voir également isNull() et length().
[constexpr noexcept] bool QQuaternion::isIdentity() const
Renvoie « true » si les composantes x, y et z de ce quaternion sont égales à 0,0 et si la composante scalaire est égale à 1,0 ; sinon, renvoie « false ».
[constexpr noexcept] bool QQuaternion::isNull() const
Renvoie « true » si les composantes x, y, z et scalaire de ce quaternion sont égales à 0,0 ; sinon, renvoie « false ».
float QQuaternion::length() const
Renvoie la longueur du quaternion. On parle également de « norme ».
Voir également lengthSquared(), normalized() et dotProduct().
float QQuaternion::lengthSquared() const
Renvoie le carré de la longueur du quaternion.
Remarque : bien que peu coûteux à calculer, cette fonction est sensible aux débordements vers le haut et vers le bas, ce qu'length() évite dans de nombreux cas.
Voir également length() et dotProduct().
[static] QQuaternion QQuaternion::nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Effectue une interpolation le long du chemin linéaire le plus court entre les positions de rotation q1 et q2. La valeur t doit être comprise entre 0 et 1 ; elle indique la distance à parcourir entre q1 et q2. Le résultat sera normalized().
Si t est inférieur ou égal à 0, alors q1 sera renvoyé. Si t est supérieur ou égal à 1, alors q2 sera renvoyé.
La fonction nlerp() est généralement plus rapide que slerp() et fournit des résultats d'interpolation sphérique approximatifs qui sont suffisants pour certaines applications.
Voir également slerp().
void QQuaternion::normalize()
Normalise le quaternion actuel in situ. Aucune action n'est effectuée si le quaternion est nul ou si sa longueur est très proche de 1.
Voir également length() et normalized().
QQuaternion QQuaternion::normalized() const
Renvoie la forme normalisée en unités de ce quaternion.
Si ce quaternion est nul, un quaternion nul est alors renvoyé. Si la longueur du quaternion est très proche de 1, le quaternion est renvoyé tel quel. Sinon, la forme normalisée du quaternion de longueur 1 est renvoyée.
Voir également normalize(), length() et dotProduct().
QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const
Fait pivoter vector à l'aide de ce quaternion afin de générer un nouveau vecteur dans l'espace 3D. Le code suivant :
QVector3D result = q.rotatedVector(vector);est équivalent à ce qui suit :
QVector3D result = (q * QQuaternion(0, vector) * q.conjugated()).vector();[static] QQuaternion QQuaternion::rotationTo(const QVector3D &from, const QVector3D &to)
Renvoie le quaternion d'arc le plus court permettant de passer de la direction décrite par le vecteur from à celle décrite par le vecteur to.
Voir également fromDirection().
[constexpr noexcept] float QQuaternion::scalar() const
Renvoie la composante scalaire de ce quaternion.
Voir également setScalar(), x(), y() et z().
[constexpr noexcept] void QQuaternion::setScalar(float scalar)
Définit la composante scalaire de ce quaternion sur scalar.
Voir également scalar(), setX(), setY() et setZ().
[constexpr noexcept] void QQuaternion::setVector(const QVector3D &vector)
Définit la composante vectorielle de ce quaternion sur vector.
Voir également vector() et setScalar().
[constexpr noexcept] void QQuaternion::setVector(float x, float y, float z)
Définit la composante vectorielle de ce quaternion sur (x, y, z).
Voir également vector() et setScalar().
[constexpr noexcept] void QQuaternion::setX(float x)
Définit la coordonnée x du vecteur de ce quaternion sur la coordonnée x fournie.
Voir également x(), setY(), setZ() et setScalar().
[constexpr noexcept] void QQuaternion::setY(float y)
Définit la coordonnée y du vecteur de ce quaternion à la coordonnée y fournie.
Voir également y(), setX(), setZ() et setScalar().
[constexpr noexcept] void QQuaternion::setZ(float z)
Définit la coordonnée z du vecteur de ce quaternion sur la coordonnée z fournie.
Voir également z(), setX(), setY() et setScalar().
[static] QQuaternion QQuaternion::slerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Effectue une interpolation le long du chemin sphérique le plus court entre les positions de rotation q1 et q2. La valeur t doit être comprise entre 0 et 1 ; elle indique la distance sphérique à parcourir entre q1 et q2.
Si t est inférieur ou égal à 0, alors q1 sera renvoyé. Si t est supérieur ou égal à 1, alors q2 sera renvoyé.
Voir également nlerp().
[since 6.11] QQuaternion::Axes QQuaternion::toAxes() const
Renvoie les trois axes orthonormés qui définissent ce quaternion.
Cette fonction a été introduite dans Qt 6.11.
Voir également QQuaternion::Axes, fromAxes(QQuaternion::Axes) et toRotationMatrix().
QVector3D QQuaternion::toEulerAngles() const
Calcule les angles d'Euler de roulis, de tangage et de lacet (en degrés) correspondant à ce quaternion.
Voir également fromEulerAngles().
QMatrix3x3 QQuaternion::toRotationMatrix() const
Crée une matrice de rotation correspondant à ce quaternion.
Remarque : si ce quaternion n'est pas normalisé, la matrice de rotation obtenue contiendra des informations de mise à l'échelle.
Voir également fromRotationMatrix() et toAxes().
[constexpr noexcept] QVector4D QQuaternion::toVector4D() const
Renvoie ce quaternion sous la forme d'un vecteur à 4 dimensions.
[constexpr noexcept] QVector3D QQuaternion::vector() const
Renvoie la composante vectorielle de ce quaternion.
Voir également setVector() et scalar().
[constexpr noexcept] float QQuaternion::x() const
Renvoie la coordonnée x du vecteur de ce quaternion.
Voir également setX(), y(), z() et scalar().
[constexpr noexcept] float QQuaternion::y() const
Renvoie la coordonnée y du vecteur de ce quaternion.
Voir également setY(), x(), z() et scalar().
[constexpr noexcept] float QQuaternion::z() const
Renvoie la coordonnée z du vecteur de ce quaternion.
Voir également setZ(), x(), y() et scalar().
QQuaternion::operator QVariant() const
Renvoie le quaternion sous la forme d'un objet de type ` QVariant`.
[constexpr noexcept] QQuaternion &QQuaternion::operator*=(const QQuaternion &quaternion)
Multiplie ce quaternion par quaternion et renvoie une référence à ce quaternion.
[constexpr noexcept] QQuaternion &QQuaternion::operator*=(float factor)
Multiplie les composantes de ce quaternion par l'factor on fournie et renvoie une référence à ce quaternion.
Voir également operator/=().
[constexpr noexcept] QQuaternion &QQuaternion::operator+=(const QQuaternion &quaternion)
Ajoute l'quaternion on indiquée à ce quaternion et renvoie une référence à ce quaternion.
Voir aussi operator-=().
[constexpr noexcept] QQuaternion &QQuaternion::operator-=(const QQuaternion &quaternion)
Soustrait l'quaternion e spécifié de ce quaternion et renvoie une référence à ce quaternion.
Voir aussi operator+=().
[constexpr] QQuaternion &QQuaternion::operator/=(float divisor)
Divise les composantes de ce quaternion par l'divisor on fournie et renvoie une référence à ce quaternion.
Voir aussi operator*=().
Éléments non membres associés
[constexpr noexcept] bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2)
Renvoie « true » si « q1 » et « q2 » sont égaux, en tenant compte d'un léger degré d'imprécision pour les comparaisons en virgule flottante ; renvoie « false » dans le cas contraire.
[constexpr noexcept] bool operator!=(const QQuaternion &q1, const QQuaternion &q2)
Renvoie « true » si « q1 » n'est pas égal à « q2 » ; sinon, renvoie « false ». Cet opérateur utilise une comparaison exacte en virgule flottante.
[constexpr noexcept] QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2)
Multiplie q1 et q2 à l'aide de la multiplication par quaternions. Le résultat correspond à l'application simultanée des deux rotations spécifiées par q1 et q2.
Voir également QQuaternion::operator*=().
QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
Permet de faire pivoter un vecteur vec à l'aide d'un quaternion quaternion afin d'obtenir un nouveau vecteur dans l'espace 3D.
[constexpr noexcept] QQuaternion operator*(const QQuaternion &quaternion, float factor)
Renvoie une copie de l'quaternion donné, multipliée par l'factor donné.
Voir aussi QQuaternion::operator*=().
[constexpr noexcept] QQuaternion operator*(float factor, const QQuaternion &quaternion)
Renvoie une copie de l'quaternion donné, multipliée par l'factor donné.
Voir aussi QQuaternion::operator*=().
[constexpr noexcept] QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2)
Renvoie un objet de type ` QQuaternion ` correspondant à la somme des quaternions fournis, ` q1 ` et ` q2` ; chaque composante est additionnée séparément.
Voir également QQuaternion::operator+=().
[constexpr noexcept] QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)
Renvoie un objet ` QQuaternion ` obtenu en soustrayant ` q2 ` de ` q1` ; chaque composante est soustraite séparément.
Voir également QQuaternion::operator-=().
[constexpr noexcept] QQuaternion operator-(const QQuaternion &quaternion)
Renvoie un objet ` QQuaternion ` obtenu en inversant le signe des trois composantes de l'quaternion donné.
Équivalent à ` QQuaternion(0,0,0,0) - quaternion`.
Il s'agit d'une fonction surchargée.
[constexpr] QQuaternion operator/(const QQuaternion &quaternion, float divisor)
Renvoie l'objet ` QQuaternion ` obtenu en divisant toutes les composantes de l'quaternion donné par l'divisor donné.
Voir également QQuaternion::operator/=().
QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
Écrit l'quaternion on fournie dans le stream on spécifiée et renvoie une référence au flux.
Voir également Sérialisation des types de données Qt.
[constexpr noexcept] bool operator==(const QQuaternion &q1, const QQuaternion &q2)
Renvoie « true » si « q1 » est égal à « q2 » ; sinon, renvoie « false ». Cet opérateur utilise une comparaison exacte en virgule flottante.
QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)
Lit un quaternion à partir du fichier stream vers le fichier quaternion, puis renvoie une référence au flux.
Voir également Sérialisation des types de données Qt.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.