2010-06-30 134 views
4

鉴于由轴线a, b定义的“规范”椭圆和弧长s,我怎样才能找到一个点QP,还对椭圆,即s顺时针沿着从P椭圆曲线 - 如果我从P开始,沿着椭圆曲线行走s的距离,我会以编程方式达到Q,并且不会破坏计算银行?椭圆弧长度

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

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

回答

3

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

看看公式在这里:由于您使用的蟒蛇

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

,龙格 - 库塔集成在Python实现在这里(我不知道许可证,虽然) :

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

只是在步骤3中的您已经有DS的值(弧lenght),你想DX mathforum解决方案4。

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

+1

同意;真正的数学积分就像你将要得到的一样,计算简单而准确。我认为提问者试图避免的是[欧拉整合](http://en.wikipedia.org/wiki/Euler_method)或[Verlet整合](http://en.wikipedia)意义上的“整合”。 org/wiki/Verlet_integration),它涉及*字面意思*添加微小的'ds'到一个点,直到你达到你想要的's'。 – 2010-06-30 19:52:27

1

您可以使用scipy.special.ellipeinc来计算弧长。 (更多细节由罗杰斯塔福德here提供。)

如果这还不够快,可以将arclength计算包装在函数中,并使用memoize decorator来缓存先前(arclength)函数调用的结果。或者,正如你所提到的,你可以预先计算出你需要的值,并将它们存储在一个字典中。

-1

为了解决这个问题,你需要一个连接:单位elipse中有一个圆圈,其中a = 1表示它具有与elipse相同的周长。那个perim是2πrp.your。则周长为P =2πrpx a

+0

'p','r'和'a'是什么?最初的问题是关于沿着椭圆的一部分寻找弧长。您似乎在说要找到整个椭圆的周长,您需要找到具有相同周长的圆的周长。这就像说“找到边界,首先找到边界”一样。 – Teepeemm 2015-10-20 03:05:01