5

私は既知の掃引角度で弧を描いた円グラフに取り組んでいます.今、各弧の中心にラベルを表示したい、または各弧の中心から線を引くと言います.

中心座標、開始座標、スイープ角度、半径がわかっているので、終了座標を計算したいと思います。

また、すべての座標に一致する三角形を描画し、距離式も使用してこれを試しましたが、Javaで方程式を解く方法がわかりません。

適切な解決策を教えてください。

4

2 に答える 2

6

ベクトルで作業します。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
于 2012-11-05T12:18:13.257 に答える
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

この行列を開始点に適用します(行列とベクトルを掛けます)

于 2012-11-05T12:19:02.710 に答える