QQuaternion Class
Die Klasse „QQuaternion“ repräsentiert ein Quaternion, das aus einem Vektor und einem Skalar besteht. Mehr...
| Header: | #include <QQuaternion> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Veraltete Mitglieder
- QQuaternion ist Teil von „Rendering in 3D“.
Öffentliche Typen
(since 6.11) struct | Axes |
(since 6.11) struct | Axis |
(since 6.11) struct | EulerAngles |
Öffentliche Funktionen
| 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) |
Statische öffentliche Mitglieder
| 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) |
Verwandte Nicht-Mitglieder
| 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) |
Ausführliche Beschreibung
Quaternionen dienen zur Darstellung von Drehungen im 3D-Raum und bestehen aus einer durch die x-, y- und z-Koordinaten festgelegten 3D-Drehachse sowie einem Skalar, der den Drehwinkel angibt.
Dokumentation der Mitgliedsfunktionen
[constexpr noexcept] QQuaternion::QQuaternion()
Erzeugt ein Identitätsquaternion (1, 0, 0, 0), d. h. mit dem Vektor (0, 0, 0) und dem Skalar 1.
[explicit constexpr noexcept] QQuaternion::QQuaternion(const QVector4D &vector)
Erzeugt ein Quaternion aus den Komponenten von vector.
[constexpr noexcept] QQuaternion::QQuaternion(float scalar, const QVector3D &vector)
Erzeugt einen Quaternion-Vektor aus den angegebenen Werten vector und scalar.
Siehe auch vector() und scalar().
[constexpr noexcept] QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)
Erzeugt ein Quaternion mit dem Vektor (xpos, ypos, zpos) und scalar.
[constexpr noexcept] QQuaternion QQuaternion::conjugated() const
Gibt das Konjugierte dieses Quaternions zurück, das (-x, -y, -z, Skalar) lautet.
[static constexpr noexcept] float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2)
Gibt das Skalarprodukt von q1 und q2 zurück.
Siehe auch length().
[since 6.11] QQuaternion::EulerAngles<float> QQuaternion::eulerAngles() const
Gibt die Euler-Winkel (in Grad) zurück, die diesem Quaternion entsprechen.
Diese Funktion wurde in Qt 6.11 eingeführt.
Siehe auch ` fromEulerAngles()`.
[static, since 6.11] QQuaternion QQuaternion::fromAxes(QQuaternion::Axes axes)
Erzeugt das Quaternion unter Verwendung der in ` axes` enthaltenen Achsen.
Hinweis: Es wird davon ausgegangen, dassdie Achsen orthonormal sind.
Diese Funktion wurde in Qt 6.11 eingeführt.
Siehe auch toAxes() und fromRotationMatrix().
[static] QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
Dies ist eine überladene Funktion.
[static] QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)
Erzeugt ein normalisiertes Quaternion, das einer Drehung um angle Grad um den angegebenen 3D- axis entspricht.
Siehe auch ` getAxisAndAngle()`.
[static] QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle)
Erzeugt ein normalisiertes Quaternion, das einer Drehung um angle Grad um die 3D-Achse entspricht (x, y, z).
Siehe auch getAxisAndAngle().
[static] QQuaternion QQuaternion::fromDirection(const QVector3D &direction, const QVector3D &up)
Erstellt das Quaternion unter Verwendung der angegebenen Vorwärtsrichtung direction und der Aufwärtsrichtung up. Wenn die Aufwärtsrichtung nicht angegeben wurde oder die Vorwärts- und Aufwärtsvektoren kollinear sind, wird eine neue orthonormale Aufwärtsrichtung generiert.
Siehe auch fromAxes() und rotationTo().
[static] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)
Erzeugt ein Quaternion, das einer Drehung um roll Grad um die z-Achse, um pitch Grad um die x-Achse und um yaw Grad um die y-Achse (in dieser Reihenfolge) entspricht.
Siehe auch eulerAngles(), toEulerAngles() und fromEulerAngles(QQuaternion::EulerAngles<float>).
[static, since 6.11] QQuaternion QQuaternion::fromEulerAngles(QQuaternion::EulerAngles<float> angles)
Entspricht
fromEulerAngles(angles.pitch, angles.yaw, angles.roll);Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.11 eingeführt.
Siehe auch eulerAngles(), toEulerAngles() und fromEulerAngles().
[static] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &angles)
Erzeugt ein Quaternion, das einer Drehung um angles: angles.z() Grad um die z-Achse, um angles.x() Grad um die x-Achse und um angles.y() Grad um die y-Achse entspricht (in dieser Reihenfolge).
Dies ist eine überladene Funktion.
Siehe auch toEulerAngles().
[static] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
Erzeugt ein Quaternion, das der Rotationsmatrix rot3x3 entspricht.
Hinweis: Ist die angegebene Rotationsmatrix nicht normiert, enthält das resultierende Quaternion Skalierungsinformationen.
Siehe auch toRotationMatrix() und fromAxes().
void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const
Extrahiert eine 3D-Achse (x, y, z) und einen Drehwinkel angle (in Grad), der diesem Quaternion entspricht.
x, y, z und angle müssen gültige, nicht auf `nullptr ` zeigende Zeiger sein, andernfalls ist das Verhalten undefiniert.
Siehe auch fromAxisAndAngle().
void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const
Extrahiert eine 3D-Achse axis und einen Drehwinkel angle (in Grad), die diesem Quaternion entsprechen.
Sowohl axis als auch angle müssen gültige, nicht-nullptr e Zeiger sein, andernfalls ist das Verhalten undefiniert.
Dies ist eine überladene Funktion.
Siehe auch fromAxisAndAngle().
[constexpr noexcept] QQuaternion QQuaternion::inverted() const
Gibt die Inverse dieses Quaternions zurück. Ist dieses Quaternion null, wird ein Null-Quaternion zurückgegeben.
Siehe auch isNull() und length().
[constexpr noexcept] bool QQuaternion::isIdentity() const
Gibt „ true “ zurück, wenn die x-, y- und z-Komponenten dieses Quaternions auf 0,0 und die Skalarkomponente auf 1,0 gesetzt sind; andernfalls wird „ false “ zurückgegeben.
[constexpr noexcept] bool QQuaternion::isNull() const
Gibt „ true “ zurück, wenn die x-, y-, z- und Skalarkomponenten dieses Quaternions auf 0,0 gesetzt sind; andernfalls wird „ false “ zurückgegeben.
float QQuaternion::length() const
Gibt die Länge des Quaternions zurück. Diese wird auch als „Norm“ bezeichnet.
Siehe auch lengthSquared(), normalized() und dotProduct().
float QQuaternion::lengthSquared() const
Gibt das Quadrat der Länge des Quaternions zurück.
Hinweis: Die Berechnung istzwar rechenintensiv, jedoch anfällig für Über- und Unterlauf, was length() in vielen Fällen vermeidet.
Siehe auch length() und dotProduct().
[static] QQuaternion QQuaternion::nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Führt eine Interpolation entlang des kürzesten linearen Pfades zwischen den Drehpositionen q1 und q2 durch. Der Wert t sollte zwischen 0 und 1 liegen und gibt die zurückzulegende Strecke zwischen q1 und q2 an. Das Ergebnis ist normalized().
Ist t kleiner oder gleich 0, wird q1 zurückgegeben. Ist t größer oder gleich 1, wird q2 zurückgegeben.
Die Funktion `nlerp()` ist in der Regel schneller als ` slerp()` und liefert Näherungsergebnisse zur sphärischen Interpolation, die für manche Anwendungen ausreichend sind.
Siehe auch slerp().
void QQuaternion::normalize()
Normalisiert das aktuelle Quaternion an Ort und Stelle. Es geschieht nichts, wenn es sich um ein Null-Quaternion handelt oder die Länge des Quaternions sehr nahe bei 1 liegt.
Siehe auch length() und normalized().
QQuaternion QQuaternion::normalized() const
Gibt die normalisierte Einheitsform dieses Quaternions zurück.
Ist dieses Quaternion null, wird ein Null-Quaternion zurückgegeben. Liegt die Länge des Quaternions sehr nahe bei 1, wird das Quaternion unverändert zurückgegeben. Andernfalls wird die normierte Form des Quaternions der Länge 1 zurückgegeben.
Siehe auch normalize(), length() und dotProduct().
QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const
Dreht „ vector “ mit diesem Quaternion, um einen neuen Vektor im 3D-Raum zu erzeugen. Der folgende Code:
QVector3D result = q.rotatedVector(vector);entspricht dem Folgenden:
QVector3D result = (q * QQuaternion(0, vector) * q.conjugated()).vector();[static] QQuaternion QQuaternion::rotationTo(const QVector3D &from, const QVector3D &to)
Gibt das kürzeste Bogenquaternion zurück, mit dem eine Drehung von der durch den Vektor from beschriebenen Richtung in die durch den Vektor to beschriebene Richtung erfolgt.
Siehe auch fromDirection().
[constexpr noexcept] float QQuaternion::scalar() const
Gibt die skalare Komponente dieses Quaternions zurück.
Siehe auch setScalar(), x(), y() und z().
[constexpr noexcept] void QQuaternion::setScalar(float scalar)
Setzt die Skalar-Komponente dieses Quaternions auf scalar.
Siehe auch scalar(), setX(), setY() und setZ().
[constexpr noexcept] void QQuaternion::setVector(const QVector3D &vector)
Setzt die Vektorkomponente dieses Quaternions auf vector.
Siehe auch vector() und setScalar().
[constexpr noexcept] void QQuaternion::setVector(float x, float y, float z)
Setzt die Vektorkomponente dieses Quaternions auf (x, y, z).
Siehe auch vector() und setScalar().
[constexpr noexcept] void QQuaternion::setX(float x)
Setzt die x-Koordinate des Vektors dieses Quaternions auf die angegebene „ x “-Koordinate.
Siehe auch x(), setY(), setZ() und setScalar().
[constexpr noexcept] void QQuaternion::setY(float y)
Setzt die y-Koordinate des Vektors dieses Quaternions auf die angegebene „ y “-Koordinate.
Siehe auch y(), setX(), setZ() und setScalar().
[constexpr noexcept] void QQuaternion::setZ(float z)
Setzt die z-Koordinate des Vektors dieses Quaternions auf die angegebene „ z “-Koordinate.
Siehe auch z(), setX(), setY() und setScalar().
[static] QQuaternion QQuaternion::slerp(const QQuaternion &q1, const QQuaternion &q2, float t)
Führt eine Interpolation entlang der kürzesten Kugelbahn zwischen den Drehpositionen q1 und q2 durch. Der Wert t sollte zwischen 0 und 1 liegen und gibt die zurückzulegenen Kugelabstand zwischen q1 und q2 an.
Ist t kleiner oder gleich 0, wird q1 zurückgegeben. Ist t größer oder gleich 1, wird q2 zurückgegeben.
Siehe auch nlerp().
[since 6.11] QQuaternion::Axes QQuaternion::toAxes() const
Gibt die drei orthonormalen Achsen zurück, die dieses Quaternion definieren.
Diese Funktion wurde in Qt 6.11 eingeführt.
Siehe auch QQuaternion::Axes, fromAxes(QQuaternion::Axes) und toRotationMatrix().
QVector3D QQuaternion::toEulerAngles() const
Berechnet die Eulerwinkel für Roll, Nick und Gier (in Grad), die diesem Quaternion entsprechen.
Siehe auch „ fromEulerAngles“ ().
QMatrix3x3 QQuaternion::toRotationMatrix() const
Erzeugt eine Rotationsmatrix, die diesem Quaternion entspricht.
Hinweis: Ist dieses Quaternion nicht normalisiert, enthält die resultierende Rotationsmatrix Skalierungsinformationen.
Siehe auch fromRotationMatrix() und toAxes().
[constexpr noexcept] QVector4D QQuaternion::toVector4D() const
Gibt dieses Quaternion als 4D-Vektor zurück.
[constexpr noexcept] QVector3D QQuaternion::vector() const
Gibt die Vektorkomponente dieses Quaternions zurück.
Siehe auch setVector() und scalar().
[constexpr noexcept] float QQuaternion::x() const
Gibt die x-Koordinate des Vektors dieses Quaternions zurück.
Siehe auch setX(), y(), z() und scalar().
[constexpr noexcept] float QQuaternion::y() const
Gibt die y-Koordinate des Vektors dieses Quaternions zurück.
Siehe auch setY(), x(), z() und scalar().
[constexpr noexcept] float QQuaternion::z() const
Gibt die z-Koordinate des Vektors dieses Quaternions zurück.
Siehe auch setZ(), x(), y() und scalar().
QQuaternion::operator QVariant() const
Gibt das Quaternion als ` QVariant` zurück.
[constexpr noexcept] QQuaternion &QQuaternion::operator*=(const QQuaternion &quaternion)
Multipliziert dieses Quaternion mit quaternion und gibt eine Referenz auf dieses Quaternion zurück.
[constexpr noexcept] QQuaternion &QQuaternion::operator*=(float factor)
Multipliziert die Komponenten dieses Quaternions mit dem angegebenen factor und gibt eine Referenz auf dieses Quaternion zurück.
Siehe auch ` operator/=()`.
[constexpr noexcept] QQuaternion &QQuaternion::operator+=(const QQuaternion &quaternion)
Fügt das angegebene „ quaternion “ zu diesem Quaternion hinzu und gibt eine Referenz auf dieses Quaternion zurück.
Siehe auch operator-=().
[constexpr noexcept] QQuaternion &QQuaternion::operator-=(const QQuaternion &quaternion)
Subtrahiert das angegebene „ quaternion “ von diesem Quaternion und gibt eine Referenz auf dieses Quaternion zurück.
Siehe auch ` operator+=()`.
[constexpr] QQuaternion &QQuaternion::operator/=(float divisor)
Teilt die Komponenten dieses Quaternions durch den angegebenen Wert divisor und gibt einen Verweis auf dieses Quaternion zurück.
Siehe auch ` operator*=()`.
Verwandte Nicht-Mitglieder
[constexpr noexcept] bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2)
Gibt „ true “ zurück, wenn „ q1 “ und „ q2 “ gleich sind, wobei bei Gleitkomma-Vergleichen ein geringer Ungenauigkeitsfaktor berücksichtigt wird; andernfalls „false“.
[constexpr noexcept] bool operator!=(const QQuaternion &q1, const QQuaternion &q2)
Gibt „ true “ zurück, wenn „ q1 “ nicht gleich „ q2 “ ist; andernfalls wird „ false “ zurückgegeben. Dieser Operator verwendet einen exakten Gleitkomma-Vergleich.
[constexpr noexcept] QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2)
Multipliziert q1 und q2 mithilfe der Quaternion-Multiplikation. Das Ergebnis entspricht der Anwendung beider Rotationen, die durch q1 und q2 angegeben sind.
Siehe auch QQuaternion::operator*=().
QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
Dreht einen Vektor vec mit einem Quaternion quaternion, um einen neuen Vektor im 3D-Raum zu erzeugen.
[constexpr noexcept] QQuaternion operator*(const QQuaternion &quaternion, float factor)
Gibt eine Kopie des angegebenen ` quaternion` zurück, multipliziert mit dem angegebenen ` factor`.
Siehe auch QQuaternion::operator*=().
[constexpr noexcept] QQuaternion operator*(float factor, const QQuaternion &quaternion)
Gibt eine Kopie des angegebenen ` quaternion` zurück, multipliziert mit dem angegebenen ` factor`.
Siehe auch QQuaternion::operator*=().
[constexpr noexcept] QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2)
Gibt ein „ QQuaternion “-Objekt zurück, das die Summe der angegebenen Quaternionen „ q1 “ und „ q2 “ darstellt; dabei wird jede Komponente separat addiert.
Siehe auch ` QQuaternion::operator+=()`.
[constexpr noexcept] QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)
Gibt ein „ QQuaternion “-Objekt zurück, das durch Subtraktion von q2 von q1 gebildet wird; jede Komponente wird separat subtrahiert.
Siehe auch ` QQuaternion::operator-=()`.
[constexpr noexcept] QQuaternion operator-(const QQuaternion &quaternion)
Gibt ein ` QQuaternion `-Objekt zurück, das durch Umkehrung des Vorzeichens aller drei Komponenten des angegebenen ` quaternion` gebildet wird.
Entspricht ` QQuaternion(0,0,0,0) - quaternion`.
Dies ist eine überladene Funktion.
[constexpr] QQuaternion operator/(const QQuaternion &quaternion, float divisor)
Gibt das Objekt „ QQuaternion “ zurück, das durch Division aller Komponenten des angegebenen „ quaternion “ durch den angegebenen „ divisor “ gebildet wird.
Siehe auch QQuaternion::operator/=().
QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
Schreibt den angegebenen „ quaternion “ in den angegebenen „ stream “ und gibt eine Referenz auf den Stream zurück.
Siehe auch „Serialisierung vonQt-Datentypen“.
[constexpr noexcept] bool operator==(const QQuaternion &q1, const QQuaternion &q2)
Gibt „ true “ zurück, wenn „ q1 “ gleich „ q2 “ ist; andernfalls wird „ false “ zurückgegeben. Dieser Operator verwendet einen exakten Gleitkomma-Vergleich.
QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)
Liest ein Quaternion aus dem angegebenen „ stream “ in den angegebenen „ quaternion “ ein und gibt eine Referenz auf den Stream zurück.
Siehe auch „Serialisierung vonQt-Datentypen“.
© 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.