【问题标题】:Calculate an elliptical arc start and end angles given two vectors给定两个向量,计算椭圆弧的起点和终点角度
【发布时间】:2016-05-12 15:59:04
【问题描述】:

我正在开发一个基于 cgm 文件输入绘制形状的程序。我正在尝试绘制椭圆弧,它根据弧中心的开始和结束向量给出开口部分。我需要帮助计算与矢量的角度,以便进行绘制。

我一直在尝试使用标准的 atan2(y/x),但后来我发现它适用于圆形而不是椭圆。

这张图片给出了我正在尝试做的一个例子。我正在寻找角度 A 和 B。

编辑:这与我的另一个问题here 有关。 (另请注意,这个问题是基于我的问题背后的数学,而另一个问题是关于 qt 的编程帮助。)

ellipses 上的 wiki 页面显示了为什么数学不起作用,但我不知道如何实现它。

【问题讨论】:

  • A 和 B 的期望值是多少?椭圆的大小是否给定?
  • @kennytm 我不确定确切的值是多少。是的,给出了椭圆的大小。我更新了原始问题,并添加了指向我的其他问题的链接。

标签: c++ qt math ellipse cgm


【解决方案1】:

您在图片中绘制的角度 A 和 B 实际上与椭圆无关。

只需计算一次 x 轴与从原点到点 (75,50) 的线之间的角度。这是由arctan(50/75) = 33.69° 给出的。并且通过对称性,它与点的角度相同(75,-50)。

然后,通过简单的三角函数,角度A 得到A = 360° - 33.69°,而B 得到B= 180° + 33.69°

考虑到A,这与atan2(-50, 75) 获得的信息相同。但是,atan2 的结果在 (i) 弧度和 (ii) 范围内 [-pi, pi]。可以加2*pi,用角度表示,结果和上面一样。

【讨论】:

  • 这是我最初尝试的,但我使用结果在 qt 中使用 drawArc 函数qpainter 类绘制角度。如果我使用这些答案,则弧线绘制不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多