当前位置: 首页> 财经> 创投人物 > 网络规划设计师教程第二版 百度网盘_全国工商企业信息查询系统_博为峰软件测试培训学费_女教师遭网课入侵直播录屏曝光8

网络规划设计师教程第二版 百度网盘_全国工商企业信息查询系统_博为峰软件测试培训学费_女教师遭网课入侵直播录屏曝光8

时间:2025/9/2 4:53:55来源:https://blog.csdn.net/qq_49443542/article/details/143626907 浏览次数:0次
网络规划设计师教程第二版 百度网盘_全国工商企业信息查询系统_博为峰软件测试培训学费_女教师遭网课入侵直播录屏曝光8

在这里插入图片描述

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

目录

  • Qt中的QVector2D类详解
    • 一、类的引言
    • 二、使用范围
    • 三、类的头文件
    • 四、类的构造介绍
    • 五、共有函数介绍
    • 六、Static函数介绍
    • 七、运算符重载
    • 八、详细代码举例
      • 示例1:创建和初始化QVector2D对象
      • 示例2:向量运算
      • 示例3:旋转和长度计算

Qt中的QVector2D类详解

一、类的引言

QVector2D是Qt框架中的一个二维向量类,它封装了两个浮点数(通常是float类型),用于表示二维空间中的点或向量。QVector2D类提供了丰富的成员函数和运算符重载,使得在二维图形处理、游戏开发、物理模拟等领域中,对点和向量的操作变得更加简单和直观。
官方帮助文档:https://doc.qt.io/qt-5/qvector2d.html

二、使用范围

QVector2D类广泛应用于需要二维向量运算的场景中。例如,在图形学中,它可以用于表示二维空间中的顶点坐标,进行平移、旋转、缩放等变换;在游戏开发中,它可以用于计算角色的移动速度、方向、碰撞检测等;在物理模拟中,它可以用于表示力、加速度、速度等物理量。

三、类的头文件

要使用QVector2D类,首先需要包含其头文件:

#include <QVector2D>

四、类的构造介绍

QVector2D类提供了多种构造函数,允许以不同的方式初始化向量。

  • 默认构造函数QVector2D(),创建一个默认的二维向量,其x和y分量都初始化为0。
  • 参数化构造函数QVector2D(float xpos, float ypos),通过指定的x和y坐标来构造一个向量。
  • 从QPointF构造QVector2D(const QPointF &point),从一个QPointF对象构造一个向量。
  • 从QPoint构造QVector2D(const QPoint &point),从一个QPoint对象构造一个向量。

五、共有函数介绍

QVector2D类提供了许多成员函数,用于获取和设置向量的分量、计算向量的长度、进行向量运算等。

  • 获取分量float x() constfloat y() const分别返回向量的x和y分量。
  • 设置分量void setX(float x)void setY(float y)分别设置向量的x和y分量。
  • 计算长度float length() const返回向量的长度(模)。
  • 单位化QVector2D normalized() const返回单位化后的向量(即长度为1的向量)。
  • 判断是否为空向量bool isNull() const判断向量是否为空向量(即x和y分量都为0)。
  • 旋转QVector2D rotate(qreal angle) const返回绕原点旋转指定角度后的向量。

六、Static函数介绍

QVector2D类还提供了一些静态成员函数,用于进行向量运算和比较。

  • 点乘static float dotProduct(const QVector2D &v1, const QVector2D &v2)计算两个向量的点乘结果。
  • 叉乘(注意:二维向量的叉乘结果是一个标量,不是向量):虽然QVector2D本身没有直接提供二维叉乘的静态函数,但可以通过计算两个向量的行列式来得到叉乘的结果(即两个向量构成的平行四边形的面积)。不过,Qt中通常使用QVector3D来进行三维向量的叉乘运算。

七、运算符重载

QVector2D类重载了一些运算符,使得向量运算更加直观和方便。

  • 加法QVector2D operator+(const QVector2D &v)返回两个向量相加的结果。
  • 减法QVector2D operator-(const QVector2D &v)返回两个向量相减的结果。
  • 数量乘法QVector2D operator*(float scalar)返回向量与标量相乘的结果。
  • 数量除法QVector2D operator/(float scalar)返回向量与标量相除的结果。
  • 赋值运算符:还重载了相应的赋值运算符(如+=-=*=/=),用于进行向量运算并更新原向量。

八、详细代码举例

以下是一些使用QVector2D类的代码示例,展示了如何创建和初始化QVector2D对象,以及进行各种向量运算。

示例1:创建和初始化QVector2D对象

#include <QVector2D>
#include <iostream>int main() {QVector2D point(3.0f, 4.0f); // 创建一个点QVector2D vector(-1.0f, 2.0f); // 创建一个向量std::cout << "Point: (" << point.x() << ", " << point.y() << ")" << std::endl;std::cout << "Vector: (" << vector.x() << ", " << vector.y() << ")" << std::endl;return 0;
}

示例2:向量运算

#include <QVector2D>
#include <iostream>int main() {QVector2D v1(1.0f, 2.0f);QVector2D v2(3.0f, 4.0f);QVector2D sum = v1 + v2; // 向量加法QVector2D diff = v1 - v2; // 向量减法QVector2D scaled = v1 * 2.0f; // 数量乘法QVector2D normalized = v1.normalized(); // 单位化std::cout << "Sum: (" << sum.x() << ", " << sum.y() << ")" << std::endl;std::cout << "Difference: (" << diff.x() << ", " << diff.y() << ")" << std::endl;std::cout << "Scaled: (" << scaled.x() << ", " << scaled.y() << ")" << std::endl;std::cout << "Normalized: (" << normalized.x() << ", " << normalized.y() << ")" << std::endl;return 0;
}

示例3:旋转和长度计算

#include <QVector2D>
#include <iostream>
#include <cmath> // 用于M_PI常量int main() {QVector2D vector(1.0f, 0.0f); // 创建一个沿x轴的单位向量QVector2D rotated = vector.rotate(M_PI / 2); // 旋转90度(π/2弧度)float length = vector.length(); // 计算向量的长度std::cout << "Rotated vector: (" << rotated.x() << ", " << rotated.y() << ")" << std::endl;std::cout << "Length of original vector: " << length << std::endl;return 0;
}

通过以上示例,我们可以看到QVector2D类在二维向量运算中的强大功能和便捷性。无论是在图形学、游戏开发还是物理模拟等领域,QVector2D类都是一个非常实用的工具。


在这里插入图片描述

关键字:网络规划设计师教程第二版 百度网盘_全国工商企业信息查询系统_博为峰软件测试培训学费_女教师遭网课入侵直播录屏曝光8

版权声明:

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

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

责任编辑: