2013-04-07 248 views
2

給定了具有起點和終點(均在笛卡爾x,y座標),半徑和方向(順時針或逆時針)的弧的描述,我需要將圓弧與起始角,終止角,中心和半徑之一。圓弧變換開始結束點到開始角度結束角度

是否有已知的算法或僞代碼允許我這樣做?另外,是否有任何特定的術語來描述這些轉換?

+0

也是我的問題。你有沒有用這些答案或其他東西去? – 2015-08-20 20:01:15

回答

5

你可以找到一箇中心解決這個方程組:

(sx-cx)^2 + (sy-cy)^2=R^2 
(ex-cx)^2 + (ey-cy)^2=R^2 

其中(SX,SY)爲起點,(例如,EY)爲終點,未知CX,CY爲中心的座標。 該系統有兩種解決方案。然後,它是可以找到的角度爲

StartAngle = ArcTan2(sy-cy, sx-cx) 
EndAngle = ArcTan2(ey-cy, ex-cx) 

注意,已知方向不允許選擇一個從兩個可能的解決方案,無需額外的限制。例如,start =(0,1),end =(1,0),R = 1和Dir =順時針給我們帶有中心(0,0)和3 * Pi/2圓弧的中心1,1)

3

我會建議一種不同於MBo的方法來獲得兩個圓的中心,它們具有給定的半徑並傳遞給起點和終點。

如果P和Q是圓弧的起點和終點,則兩個圓中每一個的中心位於與PQ正交的線L上,即從P到Q的直線,並且平分PQ。從中心到L的距離d很容易通過畢達哥拉斯定理獲得。如果e是PQ的長度,則d^2 +(e/2)^ 2 = r^2。這樣你可以避免解決你從MBo方法中得到的方程組。

請注意,如果您有半圓形,任何方法都會變得數值不穩定,因爲給定半徑上只有一個圓,其上有P和Q。 (我想我記得在這種情況下,正確的術語是'問題是不適當的',它發生在P和Q恰好相距2r時,並且要確定這是否是真實的,你需要檢查兩個雙打的相等性,總是有點問題,如果出於某種原因,你知道你有一個半圓你最好只計算PQ的中心)。