QVector3D 类

QVector3D 类表示 3D 空间中的向量或顶点。 更多...

头文件 #include <QVector3D>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui

公共函数

QVector3D()
QVector3D(float xpos, float ypos, float zpos)
QVector3D(QPoint point)
QVector3D(QPointF point)
QVector3D(QVector2D vector)
QVector3D(QVector2D vector, float zpos)
QVector3D(QVector4D vector)
floatdistanceToLine(QVector3D point, QVector3D direction) const
floatdistanceToPlane(QVector3D plane, QVector3D normal) const
floatdistanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const
floatdistanceToPoint(QVector3D point) const
boolisNull() const
floatlength() const
floatlengthSquared() const
voidnormalize()
QVector3Dnormalized() const
QVector3Dproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
voidsetX(float x)
voidsetY(float y)
voidsetZ(float z)
QPointtoPoint() const
QPointFtoPointF() const
QVector2DtoVector2D() const
QVector4DtoVector4D() const
QVector3Dunproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
floatx() const
floaty() const
floatz() const
QVariantoperator QVariant() const
QVector3D &operator*=(float factor)
QVector3D &operator*=(QVector3D vector)
QVector3D &operator+=(QVector3D vector)
QVector3D &operator-=(QVector3D vector)
QVector3D &operator/=(float divisor)
QVector3D &operator/=(QVector3D vector)
float &operator[](int i)
floatoperator[](int i) const

静态公共成员

QVector3DcrossProduct(QVector3D v1, QVector3D v2)
floatdotProduct(QVector3D v1, QVector3D v2)
QVector3Dnormal(QVector3D v1, QVector3D v2)
QVector3Dnormal(QVector3D v1, QVector3D v2, QVector3D v3)
boolqFuzzyCompare(QVector3D v1, QVector3D v2)
booloperator!=(QVector3D v1, QVector3D v2)
QVector3Doperator*(float factor, QVector3D vector)
QVector3Doperator*(QVector3D vector, float factor)
QVector3Doperator*(QVector3D v1, QVector3D v2)
QVector3Doperator+(QVector3D v1, QVector3D v2)
QVector3Doperator-(QVector3D v1, QVector3D v2)
QVector3Doperator-(QVector3D vector)
QVector3Doperator/(QVector3D vector, float divisor)
QVector3Doperator/(QVector3D vector, QVector3D divisor)
QDataStream &operator<<(QDataStream &stream, QVector3D vector)
booloperator==(QVector3D v1, QVector3D v2)
QDataStream &operator>>(QDataStream &stream, QVector3D &vector)

详细描述

向量是3D表示和绘图的主要构建模块之一。它们由三个有限浮点坐标组成,通常称为x、y和z。

QVector3D类还可以用来表示3D空间中的顶点。因此,我们不需要提供一个单独的顶点类。

另请参阅QVector2DQVector4DQQuaternion

成员函数文档

[constexpr noexcept] QVector3D::QVector3D()

构造一个空向量,即坐标为(0, 0, 0)。

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

构造一个坐标为(xposyposzpos)的向量。所有参数必须是有限的。

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

从一个2D point构造一个向量,并从该点获得x和y坐标,z坐标为0。

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

从一个2D point构造一个向量,并从该点获得x和y坐标,z坐标为0。

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

从一个指定的2D vector构造一个3D向量。z坐标被设置为0。

另请参阅toVector2D()。

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

从指定的2D向量vector构造一个3D向量。z坐标设置为zpos,必须为有限数。

另请参阅toVector2D()。

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

从指定的4D向量vector构造一个3D向量。w坐标将被丢弃。

参见toVector4D().

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

返回向量v1v2的叉积,该叉积垂直于由v1v2张成的平面。如果两个向量平行,则该值为零。

参见normal().

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

返回此顶点到由point和单位向量direction定义的直线的距离。

如果direction是零向量,则它不定义一条线。在这种情况下,返回point到这个顶点的距离。

参见distanceToPlane().

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

返回此顶点到由顶点plane和单位向量normal定义的平面的距离。假设normal参数已被归一化为单位向量。

如果顶点在平面下方,则返回值将是负数;如果顶点在平面上,则返回值是零。

参见normal()和distanceToLine().

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

返回此顶点到由顶点plane1plane2plane3定义的平面的距离。

如果顶点在平面下方,则返回值将是负数;如果顶点在平面上,则返回值是零。

定义平面的两个向量是plane2 - plane1plane3 - plane1

参见normal()和distanceToLine().

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

返回从该顶点到通过顶点定义的点之间的距离。

另请参阅distanceToPlane() 和 distanceToLine()。

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

返回 v1v2 的点积。

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

如果 x、y 和 z 坐标都设置为 0.0,则返回 true,否则返回 false

[noexcept] float QVector3D::length() const

返回从原点到向量长度的值。

另请参阅lengthSquared() 和 normalized()。

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

返回从原点到向量长度的平方。这等同于向量与向量本身的点积。

另请参阅length() 和 dotProduct()。

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

返回由 v1v2 线性生成的垂直向量的单位向量,这两个向量必须不平行。

如果你不需要结果转换为单位向量,请使用 crossProduct() 来计算 v1v2 的叉积。

另请参阅 crossProduct() 和 distanceToPlane()。

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

返回由 v2 - v1v3 - v1 标线生成的垂直单位向量,这两个线段必须不平行。

如果你不需要结果转换为单位向量,请使用 crossProduct() 来计算 v2 - v1v3 - v1 的叉积。

另请参阅 crossProduct() 和 distanceToPlane()。

[noexcept] void QVector3D::normalize()

原地规范化当前向量。如果当前向量是零向量或向量的长度非常接近 1,则不执行任何操作。

另请参阅length() 和 normalized()。

[noexcept] QVector3D QVector3D::normalized() const

返回此向量的单位向量形式。

如果此向量为空向量,则返回空向量。如果向量的长度非常接近1,则将返回该向量本身。否则,将返回长度为1的向量的归一化形式。

另请参见 length() 和 normalize

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

返回此向量在物体/模型坐标系中,使用模型视图矩阵 modelView、投影矩阵 projection 和视口维度 viewport 时的窗口坐标。

在从裁剪空间转换到归一化空间时,会对向量分量上的分量 w 进行除法操作。为了避免当 w 等于 0 时除以0,将其设置为 1。

注意: 返回的 y 坐标使用 OpenGL 方向。OpenGL 预期底部为零,而 Qt 将顶部视为 0。

另请参见 unproject

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

将此点的 x 坐标设置为给定的有限 x 坐标。

另请参见 x()、setY() 和 setZ

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

将此点的 y 坐标设置为给定的有限 y 坐标。

另请参见 y()、setX() 和 setZ

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

将此点的 z 坐标设置为给定的有限 z 坐标。

另请参见 z()、setX() 和 setY

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

返回此3D向量的 QPoint 形式。z 坐标被忽略。x 和 y 坐标被四舍五入到最近的整数。

另请参见 toPointF() 和 toVector2D

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

返回此3D向量的 QPointF 形式。z 坐标被忽略。

另请参见 toPoint() 和 toVector2D

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

返回3D向量的2D向量形式,忽略 z 坐标。

另请参阅 toVector4D() 和 toPoint.

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

返回此3D向量的4D形式,将w坐标设置为0。

另请参阅 toVector2D() 和 toPoint.

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

返回此向量在窗口坐标中最初的对象/模型坐标,使用模型视图矩阵 modelView、投影矩阵 projection 和视口尺寸 viewport

在从剪裁空间转换到归一化空间时,对向量的w分量进行除法。为防止 w 等于0时除以0,将其设置为1。

注意: viewport 中的y坐标应使用OpenGL方向。OpenGL期望底部为0,而Qt中顶部为0。

另请参阅 project.

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

返回此点的x坐标。

另请参阅 setX()、yz

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

返回此点的y坐标。

另请参阅 setY()、xz

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

返回此点的z坐标。

另请参阅 setZ()、xy

QVariant QVector3D::operator QVariant() const

将3D向量作为 QVariant 返回。

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

将此向量的坐标乘以给定的有限因子 factor 并返回对此向量的引用。

另请参阅 operator/=() 和 operator*

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

这是重载函数。

将此向量的每个分量乘以在 vector 中的相应分量并返回对此向量的引用。

注意:这与该向量的crossProduct() 以及另一向量vector的结果不同。(其分量之和即为该向量与vector的点积。)

参见:crossProductoperator/=operator*

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

将指定的vector添加到该向量中,并返回对该向量的引用。

参见:operator-=

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

从该向量减去指定的vector,并返回对该向量的引用。

参见:operator+=

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

将此向量的坐标除以给定的divisor,并返回对此向量的引用。该除数不能是零或NaN。

参见:operator*=operator/

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

将此向量的每个分量除以vector中相应的分量,并返回对此向量的引用。

vector必须没有零或NaN分量。

参见:operator*=operator/

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

返回位于索引位置i的向量分量的可修改引用。

i必须是向量中的有效索引位置(即,0 <= i < 3)。

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

返回位于索引位置i的向量分量。

i必须是向量中的有效索引位置(即,0 <= i < 3)。

相关非成员

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

如果v1v2相等(允许在浮点数比较中有一定的模糊因子),返回true;否则返回false。

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

如果v1不等于v2,返回true;否则返回false。此运算符使用精确的浮点比较。

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

返回给定 vector 的副本,乘以给定的有限 factor

另请参阅QVector3D::operator*=

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

返回给定 vector 的副本,乘以给定的有限 factor

另请参阅QVector3D::operator*=

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

返回由乘以 v1 的每个分量与对应于 v2 的分量形成的 QVector3D 对象。

注意:这不同于 v1v2crossProduct()。 (其分量之和等于 v1v2 的点积。)

另请参阅QVector3D::crossProduct

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

返回一个 QVector3D 对象,它是给定向量 v1v2 的和;每个分量都是单独相加的。

另请参阅QVector3D::operator+=

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

返回由从 v1 中减去 v2 形成的 QVector3D 对象;每个分量都是单独相减的。

另请参阅QVector3D::operator-=

[constexpr noexcept] QVector3D operator-(QVector3D vector)

这是重载函数。

返回一个 QVector3D 对象,该对象是通过改变给定的 vector 的每个分量的符号来形成的。

等同于 QVector3D(0,0,0) - vector

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

返回一个通过将给定的 vector 的每个分量除以给定的 divisor 形成的 QVector3D 对象。

divisor 不能是零或 NaN。

另请参阅QVector3D::operator/=

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

返回由给定 vector 的每个分量除以给定 divisor 的对应分量形成的 QVector3D 对象。

divisor 不能有零或 NaN 的分量。

另请参阅QVector3D::operator/=

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

将给定的 vector 写入给定的 stream,并返回对流的引用。

另请参阅 序列化 Qt 数据类型

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

如果 v1 等于 v2,则返回 true;否则返回 false。此运算符使用精确的浮点比较。

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

从给定的 stream 读取 3D 向量到给定的 vector 中,并返回对流的引用。

另请参阅 序列化 Qt 数据类型

© 2024 Qt有限公司。此处包含的文档贡献是各自所有者的版权。本文件中的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款提供许可。