2010-09-14 85 views
2

如果我已經計算出一個線段和一個圓之間的交點,我該如何判斷這個交點是否位於圓的一段上?計算點和圓段碰撞

我有方程式來判斷一個線段是否與圓相交,並且我也有該圓上的交點,但我需要知道的是該圓上的這個碰撞點是否在該圓圈的特定arg段的邊界。我有圓弧段的終點,半徑的圓心&和碰撞點。

+0

請嘗試http://math.stackexchange.com。 – kennytm 2010-09-14 20:41:47

回答

1

將交點轉換爲中心周圍的polar coordinates並比較角度。

+0

我沒有任何角度。我給出的唯一數據是弧的兩個端點。 – 2010-09-14 20:55:41

+0

@Scienceprodigy你可以使用圓的中心點和弧點找到角度。您需要爲角度(通常爲x軸)選擇參考軸,並選擇是否逆時針或順時針增加或減小角度。 – 2010-09-14 21:05:17

0

至於達里奧想法的替代方案(這應該工作以及),您可以:

  1. 計算交會點和圓弧的端點之間的距離(被稱爲intdist1intdist2)。
  2. 計算弧的端點之間的距離(arcdist)。
  3. 如果圓弧小於圓的一半(覆蓋範圍小於180度),那麼如果intdist1intdist2都小於arcdist,則知道該點是否在圓弧中。
  4. 否則,如果圓弧大於圓的一半(覆蓋超過180度),則知道點是否在圓弧中,如果intdist1intdist2大於arcdist

我猜測,因爲你沒有另外指定,端點之間的圓弧走短路。在這種情況下,您不必擔心上述第4步。

如果您使用的圓弧精確地覆蓋了圓的180度,則此方法失敗。在這種情況下,您可以將180度弧線分解成90度弧線,並檢查它們。

此外,您當然也可以使用距離的平方來比較這些距離以節省自己的平方根。另外,這種方法應該比計算角度更快,因爲這些方法涉及使用昂貴的反餘弦。