给出两个向量,计算椭圆弧的起始和终止角度

时间:2016-05-12 15:59:04

标签: c++ qt math ellipse cgm

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

我一直在尝试使用标准atan2(y / x),但后来我发现它对圆而不是省略号有效。

此图片举例说明了我正在尝试做的事情。我正在寻找角度A和B.

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

ellipses上的wiki页面显示了数学不起作用的原因,但我不确定如何实现它。

Elliptical Angle Example

1 个答案:

答案 0 :(得分:0)

您在图片中绘制的角度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并以角度表达它,你会得到与上面相同的结果。