QQuaternion Class
La classe QQuaternion représente un quaternion composé d'un vecteur et d'un scalaire. Plus d'informations...
| 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
- les membres dépréciés
- QQuaternion fait partie de Rendering in 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) |
Non-membres apparenté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 &quaternion) |
| QQuaternion | operator-(const QQuaternion &q1, const QQuaternion &q2) |
| 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 et 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()
Construit 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)
Construit un vecteur quaternion à partir des données spécifiées vector et scalar.
Voir aussi vector() et scalar().
[constexpr noexcept] QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)
Construit un quaternion avec le vecteur (xpos, ypos, zpos) et 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 en points de q1 et q2.
Voir aussi 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 aussi fromEulerAngles().
[static, since 6.11] QQuaternion QQuaternion::fromAxes(QQuaternion::Axes axes)
Construit le quaternion en utilisant les axes contenus dans axes.
Note : Les axes sont supposés être orthonormés.
Cette fonction a été introduite dans Qt 6.11.
Voir aussi 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é qui correspond à une rotation de angle degrés autour du point 3D spécifié axis.
Voir aussi getAxisAndAngle().
[static] QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle)
Crée un quaternion normalisé qui correspond à 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 en utilisant la direction vers l'avant direction et la direction vers le haut up spécifiées. Si la direction ascendante n'a pas été spécifiée ou si les vecteurs avant et ascendant sont colinéaires, une nouvelle direction ascendante orthonormée sera générée.
Voir aussi fromAxes() et rotationTo().
[static] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)
Crée un quaternion qui correspond à une rotation de roll degrés autour de l'axe z, pitch degrés autour de l'axe x et yaw degrés autour de l'axe y (dans cet ordre).
Voir aussi 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 aussi eulerAngles(), toEulerAngles(), et fromEulerAngles().
[static] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &angles)
Crée un quaternion qui correspond à 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 aussi toEulerAngles().
[static] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
Crée un quaternion correspondant à la matrice de rotation rot3x3.
Note : Si la matrice de rotation donnée n'est pas normalisée, le quaternion résultant contiendra des informations d'échelle.
Voir aussi 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.
Tous les éléments x, y, z, et angle doivent être des pointeurs nonnullptr valides, sinon le comportement est indéfini.
Voir aussi 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 être des pointeurs valides, nonnullptr, sinon le comportement est indéfini.
Il s'agit d'une fonction surchargée.
Voir aussi fromAxisAndAngle().
[constexpr noexcept] QQuaternion QQuaternion::inverted() const
Renvoie l'inverse de ce quaternion. Si ce quaternion est nul, alors un quaternion nul est retourné.
Voir aussi isNull() et length().
[constexpr noexcept] bool QQuaternion::isIdentity() const
Renvoie true si les composantes x, y et z de ce quaternion sont définies à 0,0 et que la composante scalaire est définie à 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 fixées à 0,0 ; sinon, renvoie false.
float QQuaternion::length() const
Renvoie la longueur du quaternion. Cette longueur est également appelée "norme".
Voir aussi lengthSquared(), normalized() et dotProduct().
float QQuaternion::lengthSquared() const
Renvoie la longueur du quaternion au carré.
Note : Bien que le calcul soit peu coûteux, cette fonction est sujette à des débordements et à des sous-débordements que length() permet d'éviter dans de nombreux cas.
Voir aussi length() et dotProduct().
[static] QQuaternion QQuaternion::nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Interpole le chemin linéaire le plus court entre les positions de rotation q1 et q2. La valeur t doit être comprise entre 0 et 1, indiquant la distance à parcourir entre q1 et q2. Le résultat sera normalized().
Si t est inférieur ou égal à 0, q1 sera renvoyé. Si t est supérieur ou égal à 1, q2 sera renvoyé.
La fonction nlerp() est généralement plus rapide que slerp() et donne des résultats approximatifs pour l'interpolation sphérique qui sont suffisamment bons pour certaines applications.
Voir aussi slerp().
void QQuaternion::normalize()
Normalise le quaternion en place. Rien ne se produit s'il s'agit d'un quaternion nul ou si la longueur du quaternion est très proche de 1.
Voir aussi length() et normalized().
QQuaternion QQuaternion::normalized() const
Renvoie la forme unitaire normalisée de ce quaternion.
Si ce quaternion est nul, alors un quaternion nul est retourné. Si la longueur du quaternion est très proche de 1, alors le quaternion sera retourné tel quel. Sinon, la forme normalisée du quaternion de longueur 1 sera renvoyée.
Voir aussi normalize(), length(), et dotProduct().
QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const
Fait pivoter vector avec ce quaternion pour produire 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 pour effectuer une rotation de la direction décrite par le vecteur from vers la direction décrite par le vecteur to.
Voir aussi fromDirection().
[constexpr noexcept] float QQuaternion::scalar() const
Renvoie la composante scalaire de ce quaternion.
Voir aussi setScalar(), x(), y(), et z().
[constexpr noexcept] void QQuaternion::setScalar(float scalar)
Définit la composante scalaire de ce quaternion à scalar.
Voir aussi scalar(), setX(), setY() et setZ().
[constexpr noexcept] void QQuaternion::setVector(const QVector3D &vector)
Définit la composante vectorielle de ce quaternion à vector.
Voir aussi vector() et setScalar().
[constexpr noexcept] void QQuaternion::setVector(float x, float y, float z)
Définit la composante vectorielle de ce quaternion à (x, y, z).
Voir aussi vector() et setScalar().
[constexpr noexcept] void QQuaternion::setX(float x)
Fixe la coordonnée x du vecteur de ce quaternion à la coordonnée x donnée.
Voir aussi x(), setY(), setZ() et setScalar().
[constexpr noexcept] void QQuaternion::setY(float y)
Fixe la coordonnée y du vecteur de ce quaternion à la coordonnée y donnée.
Voir aussi y(), setX(), setZ() et setScalar().
[constexpr noexcept] void QQuaternion::setZ(float z)
Définit la coordonnée z du vecteur de ce quaternion à la coordonnée z donnée.
Voir aussi z(), setX(), setY() et setScalar().
[static] QQuaternion QQuaternion::slerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Interpole le chemin sphérique le plus court entre les positions de rotation q1 et q2. La valeur t doit être comprise entre 0 et 1, indiquant la distance sphérique à parcourir entre q1 et q2.
Si t est inférieur ou égal à 0, q1 sera renvoyé. Si t est supérieur ou égal à 1, q2 sera renvoyé.
Voir aussi 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 aussi 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 résultante contiendra des informations d'échelle.
Voir aussi fromRotationMatrix() et toAxes().
[constexpr noexcept] QVector4D QQuaternion::toVector4D() const
Renvoie ce quaternion sous la forme d'un vecteur 4D.
[constexpr noexcept] QVector3D QQuaternion::vector() const
Renvoie la composante vectorielle de ce quaternion.
Voir aussi setVector() et scalar().
[constexpr noexcept] float QQuaternion::x() const
Renvoie la coordonnée x du vecteur de ce quaternion.
Voir aussi setX(), y(), z(), et scalar().
[constexpr noexcept] float QQuaternion::y() const
Renvoie la coordonnée y du vecteur de ce quaternion.
Voir aussi setY(), x(), z() et scalar().
[constexpr noexcept] float QQuaternion::z() const
Renvoie la coordonnée z du vecteur de ce quaternion.
Voir aussi setZ(), x(), y(), et scalar().
QQuaternion::operator QVariant() const
Renvoie le quaternion sous forme de 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 la valeur donnée factor, et renvoie une référence à ce quaternion.
Voir aussi operator/=().
[constexpr noexcept] QQuaternion &QQuaternion::operator+=(const QQuaternion &quaternion)
Ajoute le quaternion donné à ce quaternion et renvoie une référence à ce quaternion.
Voir aussi operator-=().
[constexpr noexcept] QQuaternion &QQuaternion::operator-=(const QQuaternion &quaternion)
Soustrait la valeur quaternion 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 la valeur donnée divisor, et renvoie une référence à ce quaternion.
Voir aussi operator*=().
Non-membres apparentés
[constexpr noexcept] bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2)
Renvoie true si q1 et q2 sont égaux, en tenant compte d'un petit facteur de flou pour les comparaisons en virgule flottante ; faux 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 en utilisant la multiplication des quaternions. Le résultat correspond à l'application des deux rotations spécifiées par q1 et q2.
Voir aussi QQuaternion::operator*=().
QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
Fait pivoter un vecteur vec avec un quaternion quaternion pour produire un nouveau vecteur dans l'espace 3D.
[constexpr noexcept] QQuaternion operator*(const QQuaternion &quaternion, float factor)
Renvoie une copie de l'adresse quaternion, multipliée par l'adresse factor.
Voir aussi QQuaternion::operator*=().
[constexpr noexcept] QQuaternion operator*(float factor, const QQuaternion &quaternion)
Renvoie une copie de l'adresse quaternion, multipliée par l'adresse factor.
Voir aussi QQuaternion::operator*=().
[constexpr noexcept] QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2)
Renvoie un objet QQuaternion qui est la somme des quaternions donnés, q1 et q2; chaque composante est ajoutée séparément.
Voir aussi QQuaternion::operator+=().
[constexpr noexcept] QQuaternion operator-(const QQuaternion &quaternion)
Renvoie un objet QQuaternion formé en changeant le signe des trois composantes de l'objet quaternion.
Équivalent à QQuaternion(0,0,0,0) - quaternion.
Il s'agit d'une fonction surchargée.
[constexpr noexcept] QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)
Renvoie un objet QQuaternion formé en soustrayant q2 de q1; chaque composant est soustrait séparément.
Voir aussi QQuaternion::operator-=().
[constexpr] QQuaternion operator/(const QQuaternion &quaternion, float divisor)
Renvoie l'objet QQuaternion formé par la division de toutes les composantes de l'objet quaternion par l'objet divisor.
Voir aussi QQuaternion::operator/=().
QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
Écrit la donnée quaternion dans la donnée stream et renvoie une référence au flux.
Voir aussi Serializing Qt Data Types (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 depuis le site stream dans le site quaternion et renvoie une référence au flux.
Voir aussi Serializing Qt Data Types (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.