2012-11-19 90 views
3

如何檢查線段和圓弧之間的距離?圓弧和線段碰撞檢測

圓弧未填充,因此只是圓的外邊緣,它是計數的一部分。

我想做碰撞檢測。基本上我有兩個圓形物體。一條是在一條線上,另一條在弧上。這些物體具有碰撞半徑。

請注意,這不是精確的碰撞檢測,因爲我認爲沒有閉式解決方案來進行按恆定速度移動的時間分析(有迭代解決方案)。

我只需要僞代碼。雖然我可以通過將弧線轉換爲兩個沒有粗細的弧線和兩個圓弧來完成此工作,並使用常規算法,但這是時間敏感的。將其分解爲原語並單獨檢查會重新檢查/重新計算一些內容,並且我想避免任何不必要的計算。

回答

2

我希望弧線是我認爲的(英語不是我的語言)。這是我如何做到的。最後一個功能是解決問題的功能,而以前的功能是實用功能。它工作正常。這個想法是計算圓和線之間的交點,並拒絕那些不在弧或線段上的交點。

注意:圓弧由其中心(xc,yc),其半徑和兩個角度定義。由於兩個角度定義了兩個弧(逆時針和順時針),因此我假定弧從第一個角度逆時針旋轉到第二個角度。兩個角度都在[0,2.PI [所以如果弧穿過(xc + R,yc)),第一個角度必須大於第二個角度。

代碼是C++。我沒有時間將它翻譯成僞代碼。我希望它有幫助。

我希望弧線是我認爲的(英語不是我的語言)。這是我如何做到的。最後一個功能是解決問題的功能,而以前的功能是實用功能。它工作正常。這個想法是計算圓和線之間的交點,並拒絕那些不在弧或線段上的交點。

注意:圓弧由其中心(xc,yc),其半徑和兩個角度定義。由於兩個角度定義了兩個弧(逆時針和順時針),因此我假定弧從第一個角度逆時針旋轉到第二個角度。兩個角度都在[0,2.PI [所以如果弧穿過(xc + R,yc)),第一個角度必須大於第二個角度。

代碼是C++。我沒有時間將它翻譯成僞代碼。我希望它有幫助。

網址:http://www.fichiers.univ-metz.fr/depot/minich/SegmentArcIntersection.txt

可用兩個星期!