QVector3D Class
Die Klasse QVector3D repräsentiert einen Vektor oder Vertex im 3D-Raum. Mehr...
Kopfzeile: | #include <QVector3D> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QVector3D ist Teil von Rendering in 3D.
Ö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 |
QVariant | 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) |
Zugehörige Nicht-Members
bool | qFuzzyCompare(QVector3D v1, QVector3D v2) |
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) |
Detaillierte Beschreibung
Vektoren sind einer der wichtigsten Bausteine der 3D-Darstellung und -Zeichnung. Sie bestehen aus drei endlichen Fließkomma-Koordinaten, die traditionell als x, y und z bezeichnet werden.
Die Klasse QVector3D kann auch verwendet werden, um Scheitelpunkte im 3D-Raum darzustellen. Daher ist es nicht notwendig, eine separate Scheitelpunktklasse bereitzustellen.
Siehe auch QVector2D, QVector4D, und QQuaternion.
Dokumentation der Mitgliedsfunktionen
[constexpr noexcept]
QVector3D::QVector3D()
Konstruiert einen Nullvektor, d. h. mit den Koordinaten (0, 0, 0).
[explicit constexpr noexcept]
QVector3D::QVector3D(QPoint point)
Konstruiert einen Vektor mit x- und y-Koordinaten aus einem 2D point und einer z-Koordinate von 0.
[explicit constexpr noexcept]
QVector3D::QVector3D(QPointF point)
Konstruiert einen Vektor mit x- und y-Koordinaten aus einem 2D point und einer z-Koordinate von 0.
[explicit constexpr noexcept]
QVector3D::QVector3D(QVector2D vector)
Konstruiert 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)
Konstruiert einen 3D-Vektor aus dem angegebenen 4D vector. Die w-Koordinate wird weggelassen.
Siehe auch toVector4D().
[constexpr noexcept]
QVector3D::QVector3D(QVector2D vector, float zpos)
Konstruiert einen 3D-Vektor aus dem angegebenen 2D vector. Die z-Koordinate wird auf zpos gesetzt, die endlich sein muss.
Siehe auch toVector2D().
[constexpr noexcept]
QVector3D::QVector3D(float xpos, float ypos, float zpos)
Konstruiert 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 Kreuzprodukt der Vektoren v1 und v2 zurück, das normal auf die von v1 und v2 aufgespannte Ebene ist. Es ist Null, wenn die beiden Vektoren parallel sind.
Siehe auch normal().
[noexcept]
float QVector3D::distanceToLine(QVector3D point, QVector3D direction) const
Gibt den Abstand dieses Scheitelpunkts von einer Linie zurück, die durch point und den Einheitsvektor direction definiert ist.
Wenn direction ein Nullvektor ist, dann definiert er keine Linie. 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 von diesem Scheitelpunkt zu einer Ebene zurück, die durch den Scheitelpunkt plane und einen Einheitsvektor normal definiert ist. Es wird angenommen, dass der Parameter normal auf einen Einheitsvektor normalisiert 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 von diesem Scheitelpunkt 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 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 die Entfernung von diesem Scheitelpunkt zu einem Punkt zurück, der durch den Scheitelpunkt point definiert ist.
Siehe auch distanceToPlane() und distanceToLine().
[static constexpr noexcept]
float QVector3D::dotProduct(QVector3D v1, QVector3D v2)
Gibt das Punktprodukt 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 die quadrierte Länge des Vektors vom Ursprung aus zurück. Dies ist äquivalent zum Punktprodukt des Vektors mit sich selbst.
Siehe auch length() und dotProduct().
[static noexcept]
QVector3D QVector3D::normal(QVector3D v1, QVector3D v2)
Gibt den Einheitsnormalvektor einer Ebene zurück, die von den Vektoren v1 und v2 aufgespannt wird, die nicht parallel zueinander sein dürfen.
Verwenden Sie crossProduct(), um das Kreuzprodukt von v1 und v2 zu berechnen, wenn Sie das Ergebnis nicht auf einen Einheitsvektor normiert haben wollen.
Siehe auch crossProduct() und distanceToPlane().
[static noexcept]
QVector3D QVector3D::normal(QVector3D v1, QVector3D v2, QVector3D v3)
Gibt den Einheitsnormalvektor einer Ebene zurück, die von den Vektoren v2 - v1 und v3 - v1 aufgespannt wird, die nicht parallel zueinander sein dürfen.
Verwenden Sie crossProduct(), um das Kreuzprodukt von v2 - v1 und v3 - v1 zu berechnen, wenn Sie das Ergebnis nicht auf einen Einheitsvektor normiert haben wollen.
Siehe auch crossProduct() und distanceToPlane().
[noexcept]
void QVector3D::normalize()
Normalisiert den aktuellen Vektor an Ort und Stelle. Es passiert nichts, wenn dieser Vektor ein Nullvektor ist oder die Länge des Vektors sehr nahe an 1 liegt.
Siehe auch length() und normalized().
[noexcept]
QVector3D QVector3D::normalized() const
Gibt die normalisierte Einheitsvektorform dieses Vektors zurück.
Wenn dieser Vektor null ist, wird ein Nullvektor zurückgegeben. Wenn die Länge des Vektors sehr nahe bei 1 liegt, wird der Vektor so zurückgegeben, wie er ist. Andernfalls wird die normalisierte 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
Liefert die Fensterkoordinaten dieses Vektors zunächst in Objekt-/Modellkoordinaten unter Verwendung der Modell-View-Matrix modelView, der Projektionsmatrix projection und der Viewport-Dimensionen viewport.
Bei der Transformation vom Clip in den normalisierten Raum findet eine Division der Vektorkomponenten durch die w-Komponente statt. Um zu verhindern, dass durch 0 geteilt wird, wenn w gleich 0 ist, wird es auf 1 gesetzt.
Hinweis: Die zurückgegebenen y-Koordinaten sind in OpenGL-Ausrichtung. OpenGL erwartet, dass der untere Rand 0 ist, während für Qt der obere Rand 0 ist.
Siehe auch unproject().
[constexpr noexcept]
void QVector3D::setX(float x)
Setzt die x-Koordinate dieses Punktes auf die angegebene endliche x Koordinate.
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ächstliegende Ganzzahl 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 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 wird.
Siehe auch toVector2D() und toPoint().
QVector3D QVector3D::unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
Liefert die Objekt-/Modellkoordinaten dieses Vektors zunächst in Fensterkoordinaten unter Verwendung der Modell-View-Matrix modelView, der Projektionsmatrix projection und der Viewport-Dimensionen viewport.
Bei der Transformation vom Clip in den normalisierten Raum findet eine Division durch die w-Komponente der Vektorkomponenten statt. Um zu verhindern, dass durch 0 geteilt wird, wenn w gleich 0 ist, wird es auf 1 gesetzt.
Hinweis: Die y-Koordinaten in viewport sollten die OpenGL-Ausrichtung verwenden. OpenGL erwartet, dass der untere Rand 0 ist, während für Qt der obere Rand 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().
QVariant 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)
Dies ist eine überladene Funktion.
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 crossProduct() von diesem Vektor und vector. (Seine Komponenten addieren sich zum Punktprodukt von diesem Vektor und vector.)
Siehe auch crossProduct(), operator/=(), und operator*().
[constexpr noexcept]
QVector3D &QVector3D::operator+=(QVector3D vector)
Fügt den angegebenen vector zu diesem Vektor hinzu und gibt einen Verweis auf diesen Vektor zurück.
Siehe auch operator-=().
[constexpr noexcept]
QVector3D &QVector3D::operator-=(QVector3D vector)
Subtrahiert den angegebenen vector von diesem Vektor und gibt einen Verweis auf diesen Vektor zurück.
Siehe auch operator+=().
[constexpr]
QVector3D &QVector3D::operator/=(QVector3D vector)
Dividiert jede Komponente dieses Vektors durch die entsprechende Komponente in vector und gibt einen Verweis auf diesen Vektor zurück.
Die vector darf keine Komponente haben, die entweder Null oder NaN ist.
Siehe auch operator*=() und operator/().
[constexpr]
QVector3D &QVector3D::operator/=(float divisor)
Teilt die Koordinaten dieses Vektors durch die angegebene divisor und gibt einen Verweis auf diesen Vektor zurück. Die 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 änderbare 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 muss eine gültige Indexposition im Vektor sein (d. h. 0 <= i < 3).
Verwandte Nicht-Mitglieder
[noexcept]
bool qFuzzyCompare(QVector3D v1, QVector3D v2)
Gibt true
zurück, wenn v1 und v2 gleich sind, wobei ein kleiner Unschärfefaktor für Fließkomma-Vergleiche berücksichtigt wird; andernfalls false.
[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 crossProduct() von v1 und v2. (Seine Komponenten addieren sich zum Punktprodukt von v1 und v2.)
Siehe auch QVector3D::crossProduct().
[constexpr noexcept]
QVector3D operator*(QVector3D vector, float factor)
Liefert eine Kopie der angegebenen vector, multipliziert mit der angegebenen endlichen factor.
Siehe auch QVector3D::operator*=().
[constexpr noexcept]
QVector3D operator*(float factor, QVector3D vector)
Liefert eine Kopie der angegebenen vector, multipliziert mit der 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 gegebenen Vektoren v1 und v2 ist; 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)
Dies ist eine überladene Funktion.
Gibt ein QVector3D Objekt zurück, das durch Ändern des Vorzeichens jeder Komponente des angegebenen vector gebildet wird.
Äquivalent zu QVector3D(0,0,0) - vector
.
[constexpr]
QVector3D operator/(QVector3D vector, QVector3D divisor)
Gibt das Objekt QVector3D zurück, das durch Division jeder Komponente des angegebenen vector durch die entsprechende Komponente des angegebenen divisor gebildet wird.
Die divisor darf keine Komponente haben, 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 das angegebene divisor gebildet wird.
Die 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 von Qt-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 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.