2012-11-05 68 views
3

我正在繪製一個餅圖,我已經繪製了已知掃角的弧。現在我想在每個弧的中心顯示標籤,或者說從每個弧的中心繪製一條線。由於我知道中心座標,起始座標,掃掠角和半徑,我想計算結束座標。如何計算弧中的終點的座標如果中心和起點座標與Android中的掃掠角一起已知?

我也試圖通過繪製一個匹配所有座標的三角形,並使用距離公式,但我不知道如何解決在Java中的方程。

請給我一個合適的解決方案。

回答

4

在向量中工作。讓A成爲從圓心到弧開始的向量。通過計算

A = start_point - centre 

theta爲掃描角度(以弧度表示)。使用旋轉矩陣圍繞圓心旋轉圓弧起點。 http://en.wikipedia.org/wiki/Rotation_matrix

明確地,

newpoint_x = cos(theta)*A_x + sin(theta)*A_y 
newpoint_y = -sin(theta)*A_x + cos(theta)*A_y 

其中A_x是x分量A(以及類似地爲A_y)。然後

newpoint = centre + (newpoint_x,newpoint_y) 

是你想要的。這可能是該點出現旋轉錯誤的方向(逆時針),如果是這樣,只需使用

theta = -theta 

改爲。這應該適合你。

如果要評估弧的中點,只要使用

theta = theta/2 
+1

thanx for ur answer。我幾乎有了這個想法,但不知道如何使用java中的向量(Mathematical).. –

1
StartAngle = atan2(StartY-CenterY, StartX - CenterX) 
EndX = CenterX + Radius * Cos(StartAngle + SweepAngle) 
EndY = CenterY + Radius * Sin(StartAngle + SweepAngle) 

另一種方法:的

shift by (Center - Start) 
rotation by SweepAngle 
back shift 

製作矩陣產品和應用此矩陣開始點(多重矩陣和向量)

+2

thanx for ur support ..上述方法計算如果SweepAngle <90的終點。所以對於一個案例它的工作和其他人不是...... –

相關問題