QVector3D 类
QVector3D 类表示 3D 空间中的向量或顶点。 更多...
头文件 | #include <QVector3D> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
- 包括继承成员在内的所有成员列表
- QVector3D 属于 3D 渲染。
公共函数
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) | |
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/=(float divisor) |
QVector3D & | operator/=(QVector3D vector) |
float & | operator[](int i) |
float | operator[](int i) const |
静态公共成员
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) |
bool | operator!=(QVector3D v1, QVector3D v2) |
QVector3D | operator*(float factor, QVector3D vector) |
QVector3D | operator*(QVector3D vector, float factor) |
QVector3D | operator*(QVector3D v1, QVector3D v2) |
QVector3D | operator+(QVector3D v1, QVector3D v2) |
QVector3D | operator-(QVector3D v1, QVector3D v2) |
QVector3D | operator-(QVector3D vector) |
QVector3D | operator/(QVector3D vector, float divisor) |
QVector3D | operator/(QVector3D vector, QVector3D divisor) |
QDataStream & | operator<<(QDataStream &stream, QVector3D vector) |
bool | operator==(QVector3D v1, QVector3D v2) |
QDataStream & | operator>>(QDataStream &stream, QVector3D &vector) |
另请参阅QVector2D、QVector4D和QQuaternion。
成员函数文档
[constexpr noexcept]
QVector3D::QVector3D()
构造一个空向量,即坐标为(0, 0, 0)。
[constexpr noexcept]
QVector3D::QVector3D(float xpos, float ypos, float zpos)
构造一个坐标为(xpos、ypos、zpos)的向量。所有参数必须是有限的。
[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)
返回向量v1和v2的叉积,该叉积垂直于由v1和v2张成的平面。如果两个向量平行,则该值为零。
参见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
返回此顶点到由顶点plane1、plane2和plane3定义的平面的距离。
如果顶点在平面下方,则返回值将是负数;如果顶点在平面上,则返回值是零。
定义平面的两个向量是plane2 - plane1和plane3 - plane1。
参见normal()和distanceToLine().
[noexcept]
float QVector3D::distanceToPoint(QVector3D point) const
返回从该顶点到通过顶点定义的点之间的距离。
另请参阅distanceToPlane() 和 distanceToLine()。
[静态 constexpr noexcept]
float QVector3D::dotProduct(QVector3D v1, QVector3D v2)
返回 v1 和 v2 的点积。
[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)
返回由 v1 和 v2 线性生成的垂直向量的单位向量,这两个向量必须不平行。
如果你不需要结果转换为单位向量,请使用 crossProduct() 来计算 v1 和 v2 的叉积。
另请参阅 crossProduct() 和 distanceToPlane()。
[static noexcept]
QVector3D QVector3D::normal(QVector3D v1, QVector3D v2, QVector3D v3)
返回由 v2 - v1 和 v3 - v1 标线生成的垂直单位向量,这两个线段必须不平行。
如果你不需要结果转换为单位向量,请使用 crossProduct() 来计算 v2 - v1 和 v3 - v1 的叉积。
另请参阅 crossProduct() 和 distanceToPlane()。
[noexcept]
void QVector3D::normalize()
原地规范化当前向量。如果当前向量是零向量或向量的长度非常接近 1,则不执行任何操作。
另请参阅length() 和 normalized()。
[noexcept]
QVector3D QVector3D::normalized() const
返回此向量的单位向量形式。
如果此向量为空向量,则返回空向量。如果向量的长度非常接近1,则将返回该向量本身。否则,将返回长度为1的向量的归一化形式。
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 坐标。
[constexpr noexcept]
void QVector3D::setY(float y)
将此点的 y 坐标设置为给定的有限 y 坐标。
[constexpr noexcept]
void QVector3D::setZ(float z)
将此点的 z 坐标设置为给定的有限 z 坐标。
[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坐标。
[constexpr noexcept]
float QVector3D::y() const
返回此点的y坐标。
[constexpr noexcept]
float QVector3D::z() const
返回此点的z坐标。
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的点积。)
参见:crossProduct,operator/= 和 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)
如果v1和v2相等(允许在浮点数比较中有一定的模糊因子),返回true
;否则返回false。
[constexpr noexcept]
bool operator!=(QVector3D v1, QVector3D v2)
如果v1不等于v2,返回true
;否则返回false
。此运算符使用精确的浮点比较。
[constexpr noexcept]
QVector3D operator*(float factor, QVector3D vector)
返回给定 vector 的副本,乘以给定的有限 factor。
[constexpr noexcept]
QVector3D operator*(QVector3D vector, float factor)
返回给定 vector 的副本,乘以给定的有限 factor。
[constexpr noexcept]
QVector3D operator*(QVector3D v1, QVector3D v2)
返回由乘以 v1 的每个分量与对应于 v2 的分量形成的 QVector3D 对象。
注意:这不同于 v1 和 v2 的 crossProduct()。 (其分量之和等于 v1 和 v2 的点积。)
[constexpr noexcept]
QVector3D operator+(QVector3D v1, QVector3D v2)
返回一个 QVector3D 对象,它是给定向量 v1 和 v2 的和;每个分量都是单独相加的。
[constexpr noexcept]
QVector3D operator-(QVector3D v1, QVector3D v2)
返回由从 v1 中减去 v2 形成的 QVector3D 对象;每个分量都是单独相减的。
[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。
[constexpr]
QVector3D operator/(QVector3D vector, QVector3D divisor)
返回由给定 vector 的每个分量除以给定 divisor 的对应分量形成的 QVector3D 对象。
divisor 不能有零或 NaN 的分量。
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 的条款提供许可。