QQuaternion Class

Die Klasse QQuaternion repräsentiert eine Quaternion, die aus einem Vektor und einem Skalar besteht. Mehr...

Kopfzeile: #include <QQuaternion>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Ö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
void getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const
void getAxisAndAngle(float *x, float *y, float *z, float *angle) const
void getAxisAndAngle(QVector3D *axis, float *angle) const
void getEulerAngles(float *pitch, float *yaw, float *roll) 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)
QVector3D toEulerAngles() const
QMatrix3x3 toRotationMatrix() const
QVector4D toVector4D() const
QVector3D vector() const
float x() const
float y() const
float z() const
QVariant 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)
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)
QQuaternion fromEulerAngles(const QVector3D &eulerAngles)
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)
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)

Detaillierte Beschreibung

Quaternionen werden zur Darstellung von Drehungen im 3D-Raum verwendet und bestehen aus einer 3D-Drehachse, die durch die x-, y- und z-Koordinaten angegeben wird, und einem Skalar, der den Drehwinkel darstellt.

Dokumentation der Mitgliedsfunktionen

[constexpr noexcept] QQuaternion::QQuaternion()

Konstruiert ein Identitäts-Quaternion (1, 0, 0, 0), d.h. mit dem Vektor (0, 0, 0) und dem Skalar 1.

[explicit constexpr noexcept] QQuaternion::QQuaternion(const QVector4D &vector)

Konstruiert ein Quaternion aus den Komponenten von vector.

[constexpr noexcept] QQuaternion::QQuaternion(float scalar, const QVector3D &vector)

Konstruiert einen Quaternionenvektor aus den angegebenen vector und scalar.

Siehe auch vector() und scalar().

[constexpr noexcept] QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)

Konstruiert eine Quaternion mit dem Vektor (xpos, ypos, zpos) und scalar.

[constexpr noexcept] QQuaternion QQuaternion::conjugated() const

Gibt die Konjugierte dieses Quaternions zurück, d. h. (-x, -y, -z, Skalar).

[static constexpr noexcept] float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2)

Gibt das Punktprodukt von q1 und q2 zurück.

Siehe auch length().

[static] QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

Konstruiert die Quaternion mit 3 Achsen (xAxis, yAxis, zAxis).

Hinweis: Es wird angenommen, dass die Achsen orthonormal sind.

Siehe auch getAxes() und fromRotationMatrix().

[static] QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)

Erzeugt eine normalisierte Quaternion, die 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 eine normalisierte Quaternion, die 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)

Konstruiert das Quaternion mit 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 erzeugt.

Siehe auch fromAxes() und rotationTo().

[static] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)

Erzeugt ein Quaternion, das einer Drehung von roll Grad um die z-Achse, pitch Grad um die x-Achse und yaw Grad um die y-Achse entspricht (in dieser Reihenfolge).

Siehe auch getEulerAngles().

[static] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &eulerAngles)

Dies ist eine überladene Funktion.

Erzeugt ein Quaternion, das einer Drehung von eulerAngles entspricht: eulerAngles.z() Grad um die z-Achse, eulerAngles.x() Grad um die x-Achse und eulerAngles.y() Grad um die y-Achse (in dieser Reihenfolge).

Siehe auch toEulerAngles().

[static] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)

Erzeugt ein Quaternion, das einer Rotationsmatrix rot3x3 entspricht.

Hinweis: Wenn eine gegebene Rotationsmatrix nicht normalisiert ist, enthält die resultierende Quaternion Skalierungsinformationen.

Siehe auch toRotationMatrix() und fromAxes().

void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const

Liefert die 3 orthonormalen Achsen (xAxis, yAxis, zAxis), die das Quaternion definieren.

Siehe auch fromAxes() und toRotationMatrix().

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 dieser Quaternion entspricht.

Siehe auch fromAxisAndAngle().

void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const

Dies ist eine überladene Funktion.

Extrahiert eine 3D-Achse axis und einen Drehwinkel angle (in Grad), der diesem Quaternion entspricht.

Siehe auch fromAxisAndAngle().

void QQuaternion::getEulerAngles(float *pitch, float *yaw, float *roll) const

Berechnet roll, pitch und yaw Euler-Winkel (in Grad), die diesem Quaternion entsprechen.

Siehe auch fromEulerAngles().

[constexpr noexcept] QQuaternion QQuaternion::inverted() const

Gibt die Inverse dieser Quaternion zurück. Wenn diese Quaternion Null ist, wird eine 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 dieser Quaternion 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 skalaren Komponenten dieser Quaternion auf 0,0 gesetzt sind; andernfalls wird false zurückgegeben.

float QQuaternion::length() const

Gibt die Länge des Quaternions zurück. Dies wird auch als "Norm" bezeichnet.

Siehe auch lengthSquared(), normalized(), und dotProduct().

float QQuaternion::lengthSquared() const

Gibt die quadrierte Länge des Quaternions zurück.

Hinweis: Dies ist zwar billig zu berechnen, aber 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)

Interpoliert entlang des kürzesten linearen Weges zwischen den Rotationspositionen q1 und q2. Der Wert t sollte zwischen 0 und 1 liegen und gibt die Strecke an, die zwischen q1 und q2 zurückzulegen ist. Das Ergebnis ist normalized().

Wenn t kleiner oder gleich 0 ist, wird q1 zurückgegeben. Wenn t größer oder gleich 1 ist, wird q2 zurückgegeben.

Die Funktion nlerp() ist in der Regel schneller als slerp() und liefert annähernde Ergebnisse zur sphärischen Interpolation, die für einige Anwendungen gut genug sind.

Siehe auch slerp().

void QQuaternion::normalize()

Normalisiert die aktuelle Quaternion an Ort und Stelle. Es passiert nichts, wenn es sich um eine Null-Quaternion handelt oder die Länge der Quaternion sehr nahe an 1 ist.

Siehe auch length() und normalized().

QQuaternion QQuaternion::normalized() const

Gibt die normalisierte Einheitsform dieses Quaternions zurück.

Wenn diese Quaternion null ist, wird eine Null-Quaternion zurückgegeben. Wenn die Länge des Quaternions sehr nahe bei 1 liegt, wird das Quaternion so zurückgegeben, wie es ist. Andernfalls wird die normalisierte Form der Quaternion 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);

ist äquivalent zu folgendem:

QVector3D result = (q * QQuaternion(0, vector) * q.conjugated()).vector();

[static] QQuaternion QQuaternion::rotationTo(const QVector3D &from, const QVector3D &to)

Gibt die kürzeste Bogenquaternion zurück, um von der durch den Vektor from beschriebenen Richtung in die durch den Vektor to beschriebene Richtung zu drehen.

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 skalare Komponente dieser Quaternion auf scalar.

Siehe auch scalar(), setX(), setY(), und setZ().

[constexpr noexcept] void QQuaternion::setVector(const QVector3D &vector)

Setzt die Vektorkomponente dieser Quaternion auf vector.

Siehe auch vector() und setScalar().

[constexpr noexcept] void QQuaternion::setVector(float x, float y, float z)

Setzt die Vektorkomponente dieser Quaternion 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)

Interpoliert entlang des kürzesten sphärischen Weges zwischen den Rotationspositionen q1 und q2. Der Wert t sollte zwischen 0 und 1 liegen und gibt die sphärische Distanz an, die zwischen q1 und q2 zurückzulegen ist.

Wenn t kleiner oder gleich 0 ist, wird q1 zurückgegeben. Wenn t größer oder gleich 1 ist, wird q2 zurückgegeben.

Siehe auch nlerp().

QVector3D QQuaternion::toEulerAngles() const

Dies ist eine überladene Funktion.

Berechnet Roll-, Nick- und Gierwinkel nach Euler (in Grad), die diesem Quaternion entsprechen.

Siehe auch fromEulerAngles().

QMatrix3x3 QQuaternion::toRotationMatrix() const

Erzeugt eine Rotationsmatrix, die diesem Quaternion entspricht.

Hinweis: Wenn diese Quaternion nicht normalisiert ist, enthält die resultierende Rotationsmatrix Skalierungsinformationen.

Siehe auch fromRotationMatrix() und getAxes().

[constexpr noexcept] QVector4D QQuaternion::toVector4D() const

Gibt diese 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().

QVariant 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 die 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 die 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 die angegebene divisor und gibt eine Referenz 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 ein kleiner Unschärfefaktor für Fließkomma-Vergleiche 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 mit der Quaternionenmultiplikation. Das Ergebnis entspricht der Anwendung der beiden durch q1 und q2 angegebenen Drehungen.

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)

Liefert eine Kopie des angegebenen quaternion, multipliziert mit dem angegebenen factor.

Siehe auch QQuaternion::operator*=().

[constexpr noexcept] QQuaternion operator*(float factor, const QQuaternion &quaternion)

Liefert eine Kopie des angegebenen quaternion, 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 ist; jede Komponente wird separat addiert.

Siehe auch QQuaternion::operator+=().

[constexpr noexcept] QQuaternion operator-(const QQuaternion &quaternion)

Dies ist eine überladene Funktion.

Gibt ein QQuaternion Objekt zurück, das durch Ändern des Vorzeichens aller drei Komponenten der angegebenen quaternion gebildet wird.

Äquivalent zu QQuaternion(0,0,0,0) - quaternion.

[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] QQuaternion operator/(const QQuaternion &quaternion, float divisor)

Gibt das Objekt QQuaternion zurück, das durch die Division aller Komponenten des angegebenen quaternion durch das angegebene 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 von Qt-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 eine Quaternion aus der angegebenen stream in die angegebene quaternion und gibt eine Referenz auf den Stream zurück.

Siehe auch Serialisierung von Qt-Datentypen.

© 2025 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.