Auf dieser Seite

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

Ö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)
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.