2013-02-13 150 views
1

我需要在給定的圓(或曲線)上找到一個或多個最小化d0 + d1的點?曲線的半徑和中心分別是(0,0)和'r',點A和B的座標是已知的。假設A =(x1,y1),B =(x1,-y1),r> sqrt(x1^2 + y1^2)。 C是應儘量減少長度D0 + D1 D0的圓的未知點 - 至C上的圓找到最小距離

點C沿圓移動圓 D1-到C B之間的距離A之間的距離。我需要在給定的圓(或曲線)上找到一個或多個最小化d0 + d1的點?

+1

你能添加圖片嗎?你需要定義你的距離函數! – 2013-02-13 11:03:24

回答

0

一般情況下是非常複雜的第一種情況,但特殊情況

A=(x1,y1)B=(x1,-y1)r > sqrt(x1^2+y1^2)

與圓,圓心起源具有足夠的對稱性,至少在某些情況下可以獲得解決方案。我假設A ≠ B(等同於y1 ≠ 0),否則這個問題對於一個圓圈來說是微不足道的。

dist(P,Q)爲點PQ之間的歐幾里得距離。的(閉合)線段連接AB是點P

dist(P,A) + dist(P,B) = dist(A,B) 

軌跡對於D > dist(A,B),點與

f(P) = dist(P,A) + dist(P,B) = D 

軌跡爲橢圓形E(D)其焦點是AB。讓P成爲圓上的一個點,並且D = f(P)

  • 如果在點P的切線與圓和橢圓E(D)不重合,P既不是局部最小值,也不是一個局部最大值的f限制於圓形。
  • 如果切線重合,且圓的曲率大於P中的E(D)的曲率,那麼P是侷限於圓的局部最大值f
  • 如果切線重合,並且圓的曲率小於P中的E(D)的曲率,那麼P是侷限於圓的局部最小值f
  • 如果切線一致,並且該圓的曲率等於E(D)P曲率,然後
    • Pf分離的局部最小值限制爲圓如果dist(P,A) = dist(P,B)
    • P既不是本地最大值或局部最小值f,否則限制在該圈內。

首先,如果x1 = 0,很容易看到(如果它不是幾何上明顯),該圓上的最小化f的點是與x座標0,即P1 = (0,r)P2 = (0,-r)的點。 [如果r² ≤ x1² + y1²,那甚至是對的。]

現在,假設x1 ≠ 0,不失一般性x1 > 0。那麼很明顯,最小化爲f的圓上的點P = (x,y)必須具有x > x1。根據情況的對稱性,點R = (r,0)必須是局部最小值或侷限於圓的局部最大值f

計算f附近R的行爲,你會發現R是局部最小當且僅當

r ≥ (x1² + y1²)/x1 

由於RE(f(R))最小曲率(和RE(f(R))切線和點圓一致),那麼R也是全球最小值。

如果是r < (x1² + y1²)/x1,那麼R是侷限於圓的局部最大值f。然後f在圓上有兩個全局最小值,具有相同的x座標。不幸的是,我沒有一個很好的公式來計算它們,所以我不能提供比迭代搜索更好的方法。

+0

嗨丹尼爾。感謝您的好解釋。問題是如何開始迭代搜索並將其作爲算法。 – Norman 2013-02-14 00:59:15

2

如果直線AB與圓相交,那麼C就是該交點(注意可以有兩個交點並且兩者的距離相等,都爲d0+d1!)。

line crosses circle

如果AB不相交的圓,則C是在圓相交從上線AB最接近圓中心的點的假想線的點。

line does not cross circle

有很多文章在網上如何找到另一點最接近的一條線的點,以及如何找到兩條線之間的交叉點,這將解決第二種情況。因爲你可以google「行圈交匯」

+0

第二部分一般不是這樣。如果連接「A」和「B」的線段完全位於圓外,距離線段最近的點將使距離之和最小化,當且僅當圓心與「A」距離「 B'。但是,在這個問題上,情況就是這樣。但是線段完全位於圓內,這使得情況更加複雜。 – 2013-02-13 21:06:53