椭圆弧长

时间:2010-06-30 18:46:18

标签: math

在由轴P定义的'规范'椭圆和弧长a, b上给出一个点s,如何找到一个点Q,同样在椭圆,沿着s的椭圆曲线顺时针方向P - 这样,如果我从P开始并沿着椭圆曲线“走”,距离为{{1}我会以编程方式到达s并且不会破坏计算库?

我听说过这可以通过某种椭圆集成来计算,但我需要快速完成这一过程。我正在寻找的是一种易于使用,计算成本低廉且相当准确的近似方法。或者至少是一种方法,即一种或两种方法。我将在python中实现它。

编辑:或者,我可能会被迫创建一个围绕省略号的位置值查找表(我可能只需要10个不同的省略号)。我该怎么做,我可以用什么方法来填充它?

3 个答案:

答案 0 :(得分:3)

您需要整合椭圆方程。实际上并不困难。

看看这里的等式:

http://mathforum.org/library/drmath/view/51945.html

由于你正在使用python,所以用于集成的Runge-Kutta在这里用Python实现(不过我不知道许可证):

http://doswa.com/blog/2009/04/21/improved-rk4-implementation/

就在mathforum解决方案的第3步和第4步,你已经有了ds(弧长)的值,你想要dx。

找到dx后,使用步骤6找到y。

答案 1 :(得分:1)

您可以使用scipy.special.ellipeinc来计算arclengths。 (更多细节由Roger Stafford here提供。)

如果速度不够快,可以将arclength计算包装在一个函数中,并使用memoize decorator来缓存先前(arclength)函数调用的结果。

或者,正如您所提到的,您可以预先计算所需的值,并将它们存储在词典中。

答案 2 :(得分:-2)

为了解决你需要结合的问题:单位椭圆中有一个圆圈
a = 1,它在椭圆上具有相同的周长。那个周期是2πrp.your。那么周长是P =2πrpxa