Auf dieser Seite

QVector3D Class

Die Klasse „QVector3D“ repräsentiert einen Vektor oder einen Scheitelpunkt im 3D-Raum. Mehr...

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

Öffentliche Funktionen

QVector3D()
QVector3D(QPoint point)
QVector3D(QPointF point)
QVector3D(QVector2D vector)
QVector3D(QVector4D vector)
QVector3D(QVector2D vector, float zpos)
QVector3D(float xpos, float ypos, float zpos)
float distanceToLine(QVector3D point, QVector3D direction) const
float distanceToPlane(QVector3D plane, QVector3D normal) const
float distanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const
float distanceToPoint(QVector3D point) const
bool isNull() const
float length() const
float lengthSquared() const
void normalize()
QVector3D normalized() const
QVector3D project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
void setX(float x)
void setY(float y)
void setZ(float z)
QPoint toPoint() const
QPointF toPointF() const
QVector2D toVector2D() const
QVector4D toVector4D() const
QVector3D unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
float x() const
float y() const
float z() const
operator QVariant() const
QVector3D &operator*=(float factor)
QVector3D &operator*=(QVector3D vector)
QVector3D &operator+=(QVector3D vector)
QVector3D &operator-=(QVector3D vector)
QVector3D &operator/=(QVector3D vector)
QVector3D &operator/=(float divisor)
float &operator[](int i)
float operator[](int i) const

Statische öffentliche Mitglieder

QVector3D crossProduct(QVector3D v1, QVector3D v2)
float dotProduct(QVector3D v1, QVector3D v2)
QVector3D normal(QVector3D v1, QVector3D v2)
QVector3D normal(QVector3D v1, QVector3D v2, QVector3D v3)
bool qFuzzyCompare(QVector3D v1, QVector3D v2)
(since 6.12) size_t qHash(QVector3D key, size_t seed = 0)
bool operator!=(QVector3D v1, QVector3D v2)
QVector3D operator*(QVector3D v1, QVector3D v2)
QVector3D operator*(QVector3D vector, float factor)
QVector3D operator*(float factor, QVector3D vector)
QVector3D operator+(QVector3D v1, QVector3D v2)
QVector3D operator-(QVector3D v1, QVector3D v2)
QVector3D operator-(QVector3D vector)
QVector3D operator/(QVector3D vector, QVector3D divisor)
QVector3D operator/(QVector3D vector, float divisor)
QDataStream &operator<<(QDataStream &stream, QVector3D vector)
bool operator==(QVector3D v1, QVector3D v2)
QDataStream &operator>>(QDataStream &stream, QVector3D &vector)

Ausführliche Beschreibung

Vektoren sind einer der wichtigsten Bausteine der 3D-Darstellung und -Zeichnung. Sie bestehen aus drei endlichen Gleitkomma-Koordinaten, die traditionell als x, y und z bezeichnet werden.

Die Klasse `QVector3D` kann auch zur Darstellung von Scheitelpunkten im 3D-Raum verwendet werden. Daher ist es nicht erforderlich, eine separate Scheitelpunktklasse bereitzustellen.

Siehe auch QVector2D, QVector4D und QQuaternion.

Dokumentation der Mitgliedsfunktionen

[constexpr noexcept] QVector3D::QVector3D()

Erzeugt einen Nullvektor, d. h. mit den Koordinaten (0, 0, 0).

[explicit constexpr noexcept] QVector3D::QVector3D(QPoint point)

Erzeugt einen Vektor mit x- und y-Koordinaten aus einem 2D- point sowie einer z-Koordinate von 0.

[explicit constexpr noexcept] QVector3D::QVector3D(QPointF point)

Erstellt einen Vektor mit x- und y-Koordinaten aus einem 2D- point sowie einer z-Koordinate von 0.

[explicit constexpr noexcept] QVector3D::QVector3D(QVector2D vector)

Erstellt einen 3D-Vektor aus dem angegebenen 2D- vector. Die z-Koordinate wird auf Null gesetzt.

Siehe auch „ toVector2D()“.

[explicit constexpr noexcept] QVector3D::QVector3D(QVector4D vector)

Erstellt einen 3D-Vektor aus dem angegebenen 4D- vector. Die w-Koordinate wird verworfen.

Siehe auch toVector4D().

[constexpr noexcept] QVector3D::QVector3D(QVector2D vector, float zpos)

Erzeugt einen 3D-Vektor aus dem angegebenen 2D- vector. Die z-Koordinate wird auf zpos gesetzt, wobei dieser Wert endlich sein muss.

Siehe auch ` toVector2D()` .

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

Erzeugt einen Vektor mit den Koordinaten (xpos, ypos, zpos). Alle Parameter müssen endlich sein.

[static constexpr noexcept] QVector3D QVector3D::crossProduct(QVector3D v1, QVector3D v2)

Gibt das Vektorprodukt der Vektoren v1 und v2 zurück, das senkrecht zu der Ebene steht, die durch v1 und v2 aufgespannt wird. Es ist gleich Null, wenn die beiden Vektoren parallel sind.

Siehe auch normal().

[noexcept] float QVector3D::distanceToLine(QVector3D point, QVector3D direction) const

Gibt den Abstand dieses Scheitelpunkts zu einer Geraden zurück, die durch point und den Einheitsvektor direction definiert ist.

Ist ` direction ` ein Nullvektor, so definiert er keine Gerade. In diesem Fall wird der Abstand von ` point ` zu diesem Scheitelpunkt zurückgegeben.

Siehe auch distanceToPlane().

[constexpr noexcept] float QVector3D::distanceToPlane(QVector3D plane, QVector3D normal) const

Gibt den Abstand dieses Scheitelpunkts zu einer Ebene zurück, die durch den Scheitelpunkt plane und einen Einheitsvektor normal definiert ist. Es wird davon ausgegangen, dass der Parameter normal auf einen Einheitsvektor normiert wurde.

Der Rückgabewert ist negativ, wenn der Scheitelpunkt unterhalb der Ebene liegt, oder null, wenn er auf der Ebene liegt.

Siehe auch normal() und distanceToLine().

[noexcept] float QVector3D::distanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const

Gibt den Abstand dieses Scheitelpunkts zu einer Ebene zurück, die durch die Scheitelpunkte plane1, plane2 und plane3 definiert ist.

Der Rückgabewert ist negativ, wenn der Scheitelpunkt unterhalb der Ebene liegt, oder gleich Null, wenn er auf der Ebene liegt.

Die beiden Vektoren, die die Ebene definieren, sind plane2 – plane1 und plane3 – plane1.

Siehe auch normal() und distanceToLine().

[noexcept] float QVector3D::distanceToPoint(QVector3D point) const

Gibt den Abstand von diesem Scheitelpunkt zu einem Punkt zurück, der durch die Koordinaten point definiert ist.

Siehe auch distanceToPlane() und distanceToLine().

[static constexpr noexcept] float QVector3D::dotProduct(QVector3D v1, QVector3D v2)

Gibt das Skalarprodukt von ` v1 ` und ` v2` zurück.

[constexpr noexcept] bool QVector3D::isNull() const

Gibt „ true “ zurück, wenn die x-, y- und z-Koordinaten auf 0,0 gesetzt sind, andernfalls „ false “.

[noexcept] float QVector3D::length() const

Gibt die Länge des Vektors vom Ursprung aus zurück.

Siehe auch lengthSquared() und normalized().

[constexpr noexcept] float QVector3D::lengthSquared() const

Gibt das Quadrat der Länge des Vektors vom Ursprung aus zurück. Dies entspricht dem Skalarprodukt des Vektors mit sich selbst.

Siehe auch length() und dotProduct().

[static noexcept] QVector3D QVector3D::normal(QVector3D v1, QVector3D v2)

Gibt den Einheitsnormalenvektor einer Ebene zurück, die durch die Vektoren v1 und v2 aufgespannt wird, wobei diese nicht parallel zueinander sein dürfen.

Verwenden Sie crossProduct(), um das Vektorprodukt von v1 und v2 zu berechnen, wenn das Ergebnis nicht auf einen Einheitsvektor normiert werden muss.

Siehe auch crossProduct() und distanceToPlane().

[static noexcept] QVector3D QVector3D::normal(QVector3D v1, QVector3D v2, QVector3D v3)

Gibt den Einheitsnormalenvektor einer Ebene zurück, die durch die Vektoren v2 – v1 und v3 – v1 aufgespannt wird, wobei diese Vektoren nicht parallel zueinander sein dürfen.

Verwenden Sie crossProduct(), um das Vektorprodukt von v2 – v1 und v3 – v1 zu berechnen, wenn das Ergebnis nicht auf einen Einheitsvektor normiert sein muss.

Siehe auch crossProduct() und distanceToPlane().

[noexcept] void QVector3D::normalize()

Normalisiert den aktuellen Vektor an Ort und Stelle. Es geschieht nichts, wenn dieser Vektor ein Nullvektor ist oder die Länge des Vektors sehr nahe bei 1 liegt.

Siehe auch length() und normalized().

[noexcept] QVector3D QVector3D::normalized() const

Gibt diesen Vektor in der Form eines normierten Einheitsvektors zurück.

Ist dieser Vektor null, wird ein Nullvektor zurückgegeben. Liegt die Länge des Vektors sehr nahe bei 1, wird der Vektor unverändert zurückgegeben. Andernfalls wird die normierte Form des Vektors der Länge 1 zurückgegeben.

Siehe auch length() und normalize().

QVector3D QVector3D::project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const

Gibt die Fensterkoordinaten dieses Vektors zurück, die ursprünglich in Objekt-/Modellkoordinaten vorliegen, unter Verwendung der Modell-Ansichts-Matrix modelView, der Projektionsmatrix projection und der Ansichtsfensterabmessungen viewport.

Bei der Transformation vom Clip- in den normierten Raum erfolgt eine Division der Vektorkomponenten durch die w-Komponente. Um eine Division durch 0 zu vermeiden, wenn w gleich 0 ist, wird w auf 1 gesetzt.

Hinweis: Die zurückgegebenen y-Koordinaten entsprechen der OpenGL-Ausrichtung. OpenGL erwartet, dass unten 0 ist, während bei Qt oben 0 ist.

Siehe auch unproject().

[constexpr noexcept] void QVector3D::setX(float x)

Setzt die x-Koordinate dieses Punktes auf die angegebene endliche Koordinate x.

Siehe auch x(), setY() und setZ().

[constexpr noexcept] void QVector3D::setY(float y)

Setzt die y-Koordinate dieses Punktes auf die angegebene endliche y -Koordinate.

Siehe auch y(), setX() und setZ().

[constexpr noexcept] void QVector3D::setZ(float z)

Setzt die z-Koordinate dieses Punktes auf die angegebene, endliche z -Koordinate.

Siehe auch z(), setX() und setY().

[constexpr noexcept] QPoint QVector3D::toPoint() const

Gibt die Form „ QPoint “ dieses 3D-Vektors zurück. Die z-Koordinate wird weggelassen. Die x- und y-Koordinaten werden auf die nächsten ganzen Zahlen gerundet.

Siehe auch „ toPointF()“ und „ toVector2D()“.

[constexpr noexcept] QPointF QVector3D::toPointF() const

Gibt die Form „ QPointF “ dieses 3D-Vektors zurück. Die z-Koordinate wird dabei weggelassen.

Siehe auch „ toPoint()“ und „ toVector2D()“.

[constexpr noexcept] QVector2D QVector3D::toVector2D() const

Gibt die 2D-Vektorform dieses 3D-Vektors zurück, wobei die z-Koordinate weggelassen wird.

Siehe auch toVector4D() und toPoint().

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

Gibt die 4D-Form dieses 3D-Vektors zurück, wobei die w-Koordinate auf Null gesetzt ist.

Siehe auch toVector2D() und toPoint().

QVector3D QVector3D::unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const

Gibt die Objekt-/Modellkoordinaten dieses Vektors zurück, die ursprünglich in Fensterkoordinaten vorliegen, unter Verwendung der Modell-Ansichts-Matrix modelView, der Projektionsmatrix projection und der Viewport-Abmessungen viewport.

Bei der Transformation vom Clip- in den normalisierten Raum erfolgt eine Division durch die w-Komponente der Vektorkomponenten. Um eine Division durch 0 zu vermeiden, wenn w gleich 0 ist, wird w auf 1 gesetzt.

Hinweis: Die y- Koordinaten in viewport sollten der OpenGL-Orientierung entsprechen. OpenGL erwartet, dass unten 0 ist, während bei Qt oben 0 ist.

Siehe auch ` project()`.

[constexpr noexcept] float QVector3D::x() const

Gibt die x-Koordinate dieses Punktes zurück.

Siehe auch setX(), y() und z().

[constexpr noexcept] float QVector3D::y() const

Gibt die y-Koordinate dieses Punktes zurück.

Siehe auch setY(), x() und z().

[constexpr noexcept] float QVector3D::z() const

Gibt die z-Koordinate dieses Punktes zurück.

Siehe auch setZ(), x() und y().

QVector3D::operator QVariant() const

Gibt den 3D-Vektor als ` QVariant` zurück.

[constexpr noexcept] QVector3D &QVector3D::operator*=(float factor)

Multipliziert die Koordinaten dieses Vektors mit der angegebenen endlichen factor und gibt eine Referenz auf diesen Vektor zurück.

Siehe auch „ operator/=()“ und „ operator*()“.

[constexpr noexcept] QVector3D &QVector3D::operator*=(QVector3D vector)

Multipliziert jede Komponente dieses Vektors mit der entsprechenden Komponente in vector und gibt eine Referenz auf diesen Vektor zurück.

Hinweis: Dies ist nicht dasselbe wie die Funktion ` crossProduct()` dieses Vektors und ` vector`. (Die Summe ihrer Komponenten entspricht dem Skalarprodukt dieses Vektors und ` vector`.)

Dies ist eine überladene Funktion.

Siehe auch crossProduct(), operator/=() und operator*().

[constexpr noexcept] QVector3D &QVector3D::operator+=(QVector3D vector)

Fügt den angegebenen vector zu diesem Vektor hinzu und gibt eine Referenz auf diesen Vektor zurück.

Siehe auch ` operator-=()`.

[constexpr noexcept] QVector3D &QVector3D::operator-=(QVector3D vector)

Subtrahiert den angegebenen Vektor ` vector ` von diesem Vektor und gibt einen Verweis auf diesen Vektor zurück.

Siehe auch ` operator+=()`.

[constexpr] QVector3D &QVector3D::operator/=(QVector3D vector)

Teilt jede Komponente dieses Vektors durch die entsprechende Komponente in „ vector “ und gibt eine Referenz auf diesen Vektor zurück.

Der Vektor ` vector ` darf keine Komponente enthalten, die entweder Null oder NaN ist.

Siehe auch „ operator*=()“ und „ operator/()“.

[constexpr] QVector3D &QVector3D::operator/=(float divisor)

Teilt die Koordinaten dieses Vektors durch den angegebenen Wert „ divisor “ und gibt eine Referenz auf diesen Vektor zurück. Der Wert „ divisor “ darf weder Null noch NaN sein.

Siehe auch „ operator*=()“ und „ operator/()“.

[constexpr] float &QVector3D::operator[](int i)

Gibt die Komponente des Vektors an der Indexposition i als bearbeitbare Referenz zurück.

i muss eine gültige Indexposition im Vektor sein (d. h., 0 <= i < 3).

[constexpr] float QVector3D::operator[](int i) const

Gibt die Komponente des Vektors an der Indexposition i zurück.

i i muss eine gültige Indexposition im Vektor sein (d. h., 0 <= < 3).

Verwandte Nicht-Mitglieder

[noexcept] bool qFuzzyCompare(QVector3D v1, QVector3D v2)

Gibt „ true “ zurück, wenn „ v1 “ und „ v2 “ gleich sind, wobei ein geringer Ungenauigkeitsfaktor bei Gleitkomma-Vergleichen berücksichtigt wird; andernfalls „false“.

[constexpr noexcept, since 6.12] size_t qHash(QVector3D key, size_t seed = 0)

Gibt den Hash-Wert für „ key “ zurück, wobei „ seed “ als Startwert für die Berechnung verwendet wird.

Diese Funktion wurde in Qt 6.12 eingeführt.

[constexpr noexcept] bool operator!=(QVector3D v1, QVector3D v2)

Gibt „ true “ zurück, wenn „ v1 “ nicht gleich „ v2 “ ist; andernfalls wird „ false “ zurückgegeben. Dieser Operator verwendet einen exakten Gleitkomma-Vergleich.

[constexpr noexcept] QVector3D operator*(QVector3D v1, QVector3D v2)

Gibt das Objekt „ QVector3D “ zurück, das durch Multiplikation jeder Komponente von „ v1 “ mit der entsprechenden Komponente von „ v2 “ gebildet wird.

Hinweis: Dies ist nicht dasselbe wie die Funktion „ crossProduct()“ von „ v1 “ und „ v2 “. (Die Summe ihrer Komponenten entspricht dem Skalarprodukt von „ v1 “ und „ v2 “.)

Siehe auch QVector3D::crossProduct().

[constexpr noexcept] QVector3D operator*(QVector3D vector, float factor)

Gibt eine Kopie des angegebenen „ vector “ zurück, multipliziert mit dem angegebenen endlichen „ factor “.

Siehe auch ` QVector3D::operator*=()`.

[constexpr noexcept] QVector3D operator*(float factor, QVector3D vector)

Gibt eine Kopie des angegebenen „ vector “ zurück, multipliziert mit dem angegebenen endlichen „ factor “.

Siehe auch ` QVector3D::operator*=()`.

[constexpr noexcept] QVector3D operator+(QVector3D v1, QVector3D v2)

Gibt ein ` QVector3D `-Objekt zurück, das die Summe der angegebenen Vektoren ` v1 ` und ` v2` darstellt; jede Komponente wird separat addiert.

Siehe auch ` QVector3D::operator+=()`.

[constexpr noexcept] QVector3D operator-(QVector3D v1, QVector3D v2)

Gibt ein „ QVector3D “-Objekt zurück, das durch Subtraktion von v2 von v1 gebildet wird; jede Komponente wird separat subtrahiert.

Siehe auch ` QVector3D::operator-=()`.

[constexpr noexcept] QVector3D operator-(QVector3D vector)

Gibt ein ` QVector3D `-Objekt zurück, das durch Umkehrung des Vorzeichens jeder Komponente des angegebenen ` vector` gebildet wird.

Entspricht ` QVector3D(0,0,0) - vector`.

Dies ist eine überladene Funktion.

[constexpr] QVector3D operator/(QVector3D vector, QVector3D divisor)

Gibt das Objekt „ QVector3D “ zurück, das dadurch gebildet wird, dass jede Komponente des angegebenen „ vector “ durch die entsprechende Komponente des angegebenen „ divisor “ dividiert wird.

Das ` divisor ` darf keine Komponente enthalten, die entweder Null oder `NaN` ist.

Siehe auch QVector3D::operator/=().

[constexpr] QVector3D operator/(QVector3D vector, float divisor)

Gibt das Objekt „ QVector3D “ zurück, das durch Division jeder Komponente des angegebenen „ vector “ durch den angegebenen „ divisor “ gebildet wird.

Das ` divisor ` darf weder Null noch NaN sein.

Siehe auch QVector3D::operator/=().

QDataStream &operator<<(QDataStream &stream, QVector3D vector)

Schreibt den angegebenen „ vector “ in den angegebenen „ stream “ und gibt eine Referenz auf den Stream zurück.

Siehe auch „Serialisierung vonQt-Datentypen“.

[constexpr noexcept] bool operator==(QVector3D v1, QVector3D v2)

Gibt „ true “ zurück, wenn „ v1 “ gleich „ v2 “ ist; andernfalls wird „ false “ zurückgegeben. Dieser Operator verwendet einen exakten Gleitkomma-Vergleich.

QDataStream &operator>>(QDataStream &stream, QVector3D &vector)

Liest einen 3D-Vektor aus dem angegebenen „ stream “ in den angegebenen „ vector “ 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.