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 回答