您的位置:首页 > 游戏 > 手游 > 设计在线播放_塘沽网络公司_百度站长平台工具_北京企业网站seo平台

设计在线播放_塘沽网络公司_百度站长平台工具_北京企业网站seo平台

2024/12/7 12:37:54 来源:https://blog.csdn.net/qq_49443542/article/details/143655340  浏览:    关键词:设计在线播放_塘沽网络公司_百度站长平台工具_北京企业网站seo平台
设计在线播放_塘沽网络公司_百度站长平台工具_北京企业网站seo平台

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「QT」QT5程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明
「Py」Python程序设计「Math」探秘数学世界

目录

    • Qt中QVector4D类详解(基于Qt 5.15版本)
      • 一、类的引言
      • 二、使用范围
      • 三、类的头文件
      • 四、类的继承
      • 五、类的构造介绍
      • 六、共有函数介绍
      • 七、static函数介绍
      • 八、运算符重载
      • 九、详细代码举例

Qt中QVector4D类详解(基于Qt 5.15版本)

一、类的引言

QVector4D类是Qt框架中用于表示和操作四维向量或顶点的核心类。它广泛应用于3D图形渲染、物理模拟、动画以及任何需要四维空间表示的领域。QVector4D通过存储四个浮点数(x, y, z, w)来定义其在四维空间中的位置和方向。
官方文档:https://doc.qt.io/qt-5/qvector4d.html

二、使用范围

QVector4D类的使用范围包括但不限于:

  • 3D图形渲染:在3D图形编程中,QVector4D常用于表示顶点坐标、颜色值(包括透明度)、纹理坐标等。
  • 物理模拟:在物理引擎中,QVector4D可用于表示力和速度等物理量的四维向量。
  • 动画:在动画系统中,QVector4D可用于表示关键帧的插值数据。
  • 数学计算:QVector4D提供了丰富的数学函数,如点积、叉积、归一化等,方便进行四维向量的各种计算。

三、类的头文件

在Qt 5.15版本中,QVector4D类的头文件是<QVector4D>,它位于QtCore模块中。因此,在使用QVector4D类之前,需要在项目的.pro文件中添加QT += core配置,以包含QtCore模块。

四、类的继承

QVector4D类是一个独立的类,不继承自其他类。它实现了对四维向量的表示和操作功能,是Qt几何数据类体系中的一个重要组成部分。

五、类的构造介绍

QVector4D类提供了多个构造函数,允许以不同的方式初始化四维向量:

  1. QVector4D():构造一个默认的QVector4D对象,其x、y、z、w分量均被设置为0.0。
  2. QVector4D(float xpos, float ypos, float zpos, float wpos):构造一个具有指定x、y、z、w分量的QVector4D对象。
  3. QVector4D(const QPoint &point):根据二维点构造QVector4D对象,其z和w分量被设置为0.0。
  4. QVector4D(const QPointF &point):与上一个构造函数类似,但使用QPointF对象作为输入。
  5. QVector4D(const QVector2D &vector):根据二维向量构造QVector4D对象,其z和w分量被设置为0.0。
  6. QVector4D(const QVector2D &vector, float zpos, float wpos):根据二维向量和指定的z、w分量构造QVector4D对象。
  7. QVector4D(const QVector3D &vector):根据三维向量构造QVector4D对象,其w分量被设置为0.0。
  8. QVector4D(const QVector3D &vector, float wpos):根据三维向量和指定的w分量构造QVector4D对象。

六、共有函数介绍

QVector4D类提供了以下共有成员函数,用于操作和查询四维向量的属性:

  • float x() const:返回x分量。
  • float y() const:返回y分量。
  • float z() const:返回z分量。
  • float w() const:返回w分量。
  • void setX(float x):设置x分量。
  • void setY(float y):设置y分量。
  • void setZ(float z):设置z分量。
  • void setW(float w):设置w分量。
  • bool isNull() const:如果x、y、z、w分量都等于0.0(考虑到浮点数精度),则返回true。
  • float length() const:返回向量的长度(模)。
  • float lengthSquared() const:返回向量长度的平方,避免了开方运算,通常用于比较长度时提高效率。
  • QVector4D normalized() const:返回向量的归一化形式(单位向量),不改变原向量。
  • void normalize():就地(in-place)归一化向量,如果向量是零向量或长度非常接近1,则不进行任何操作。
  • QVector4D &operator*=(float factor):将向量乘以一个标量因子。
  • QVector4D &operator*=(const QVector4D &vector):将向量与另一个向量进行分量乘法运算。
  • QVector4D &operator+=(const QVector4D &vector):将向量与另一个向量进行分量加法运算。
  • QVector4D &operator-=(const QVector4D &vector):将向量与另一个向量进行分量减法运算。
  • QVector4D &operator/=(float divisor):将向量除以一个标量因子。
  • QVector4D &operator/=(const QVector4D &vector):将向量与另一个向量进行分量除法运算(对应分量相除)。

七、static函数介绍

在Qt 5.15版本中,QVector4D类提供了一个static成员函数:

  • static float dotProduct(const QVector4D &v1, const QVector4D &v2):计算两个向量的点积。

八、运算符重载

QVector4D类支持以下运算符重载,使得向量的操作更加直观和方便:

  • QVector4D operator+(const QVector4D &vector):向量加法。
  • QVector4D operator-(const QVector4D &vector):向量减法。
  • QVector4D operator*(float factor):向量与标量乘法。
  • QVector4D operator*(const QVector4D &vector):向量与向量分量乘法(不同于operator*=(const QVector4D &vector),后者会修改原向量)。
  • QVector4D operator/(float divisor):向量与标量除法。
  • QVector4D operator/(const QVector4D &divisor):向量与向量分量除法(对应分量相除)。
  • bool operator==(const QVector4D &vector):向量相等比较。
  • bool operator!=(const QVector4D &vector):向量不等比较。

此外,QVector4D类还支持类型转换运算符operator QVariant() const,允许将QVector4D对象转换为QVariant对象。

九、详细代码举例

以下是一个使用QVector4D类的详细代码示例:

#include <QCoreApplication>
#include <QVector4D>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 构造QVector4D对象QVector4D vector1(1.0f, 2.0f, 3.0f, 4.0f);QVector4D vector2(5.0f, 6.0f, 7.0f, 8.0f);// 输出向量的分量qDebug() << "Vector1:" << "x=" << vector1.x() << ", y=" << vector1.y() << ", z=" << vector1.z() << ", w=" << vector1.w();qDebug() << "Vector2:" << "x=" << vector2.x() << ", y=" << vector2.y() << ", z=" << vector2.z() << ", w=" << vector2.w();// 向量加法QVector4D sum = vector1 + vector2;qDebug() << "Sum:" << "x=" << sum.x() << ", y=" << sum.y() << ", z=" << sum.z() << ", w=" << sum.w();// 向量减法QVector4D difference = vector1 - vector2;qDebug() << "Difference:" << "x=" << difference.x() << ", y=" << difference.y() << ", z=" << difference.z() << ", w=" << difference.w();// 向量与标量乘法QVector4D scaledVector = vector1 * 2.0f;qDebug() << "Scaled Vector1:" << "x=" << scaledVector.x() << ", y=" << scaledVector.y() << ", z=" << scaledVector.z() << ", w=" << scaledVector.w();// 向量点积float dotProd = QVector4D::dotProduct(vector1, vector2);qDebug() << "Dot Product:" << dotProd;// 向量归一化QVector4D normalizedVector = vector1.normalized();qDebug() << "Normalized Vector1:" << "x=" << normalizedVector.x() << ", y=" << normalizedVector.y() << ", z=" << normalizedVector.z() << ", w=" << normalizedVector.w();// 向量长度float length = vector1.length();qDebug() << "Length of Vector1:" << length;return a.exec();
}

在这个示例中,我们创建了两个QVector4D对象vector1vector2,并使用了加法、减法、与标量乘法、点积、归一化和长度计算等成员函数来操作它们。此外,我们还展示了如何使用qDebug()函数输出向

何曾参静谧的博客


在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com