2011-05-20 166 views
6

假設我們有一個橢圓x^2/a^2 + y^2/b^2。在橢圓上取一個點(a * cos(t),b * sint(t)),找到橢圓上另一個點的最快方法是使它們之間的距離是給定的d。 [d小於pi * a * b]。橢圓測量距離

當我有一個角[四分之一橢圓]並且需要找到沿着它的某些'd'分隔點時遇到問題。

+3

你的意思是沿圓周的距離,或沿着弦? – NPE 2011-05-20 11:06:24

+1

[這可能有幫助](http://en.wikipedia.org/wiki/Elliptic_integral#Complete_elliptic_integral_of_the_second_kind)。 – 2011-05-20 11:10:36

+1

一種計算方法是在橢圓上找到相反的點,然後在距離兩側使用二進制搜索。 – Peteris 2011-05-20 11:15:16

回答

3

橢圓的一個子部分的長度是一個橢圓積分,沒有封閉形式的解決方案。

爲了計算沿橢圓的距離,您將需要一個數值積分例程。我推薦Romberg,或者Gauss Quadrature(查看維基百科)。如果您正在重複執行此操作,請在橢圓周圍的一堆點上預先計算距離,以便您可以快速到達正確的區域,然後開始進行積分。

您需要平分(查看維基百科)才能找到所需的長度。

+0

你可能想看看數字食譜。這是舊的FORTRAN版本,但它們涵蓋了數學。值得購買新書,第3版。 http://ftp.eq.uc.pt/books/NumericalRecipes/f6-11.pdf – Dov 2011-05-24 17:33:40

+0

我還發現這個庫有一個求解器:http://www.alglib.net/specialfunctions/ellipticintegrals.php – Dov 2011-05-24 18:15:50

0

橢圓弧的長度沒有解析解。這意味着您將無法將數字插入等式中查找結果,而是使用數值積分方法。

Simpsons rule很容易實現,儘管最有可能比其他答案中提到的方法慢。

現在,你有辦法找到一個橢圓弧的長度,只是衡量不同的終點,直到你找到長度d之一,一些可接受的公差