当前位置: 首页 > 网络知识

Qt 求圆和椭圆上任意角度点的坐标

时间:2026-01-29 09:27:05

0.圆相关公式

在笛卡尔坐标系上,一个标准的圆是这样的:

已知圆心坐标 (x0,y0),半径 R,角度 a,则圆边上点(x',y')的坐标为:

C 的三角函数参数为弧度,转换如下:

角度转弧度:

弧度转角度:

但我们知道,Qt 绘图是屏幕坐标系,起点在左上角,以右下角为正方向:

(可以把计算后的 y 取反来得到想要的效果)

1 void MainWindow::paintEvent(QPaintEvent *event) 2

运行结果:

1.椭圆相关公式

在笛卡尔坐标系上,一个标准的椭圆是这样的:

已知圆心坐标 (x0,y0),横轴 A(长半轴),竖轴 B(短半轴),角度 a,则圆边上点(x',y')的坐标为:

椭圆半径:

(可以发现,与普通圆相比,不考虑椭圆角度的话只是半径变化了,其他部分是一样的)

1 void MainWindow::paintEvent(QPaintEvent *event) 2

运行结果:

2.旋转矩阵

上面的角度都是从右侧开始,椭圆也是标准椭圆,如果我们想旋转一定角度来绘制,就需要用到我们的旋转矩阵了。

(本节主要来自参考博客)

已知 A(x,y) ,求旋转 a 角度后的 B(x’,y’) 坐标:

公式推导:

根据矩阵乘法计算规则,可以推出:

操作流程:

  • 把图形的各点平移,令旋转中心平移至原点;
  • 乘以旋转矩阵;
  • 再平移至原来的旋转中心。

我们将上面椭圆的代码改一下,逆时针旋转 45 度:

1 2 void MainWindow::paintEvent(QPaintEvent *event) 3

运行结果:

(第一次计算的角度坐标是计算标准椭圆下的位置,第二次是根据椭圆的旋转角度做旋转得到的坐标)

(本来就有 45 度,从右侧逆时针旋转,再旋转 45度就成了垂直向上了)

(虽然线可以直接 QPainter 旋转的方式绘制,但是这样文本也旋转了)



上一篇:Qt QTableWidget控件设置表头等宽
下一篇:Modbus通讯协议中的四种字节顺序
Qt
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素