如何计算Arc中终点的坐标如果中心和起始坐标在Android中已知为扫描角度?

我正在制作一个饼图,其中我绘制了具有已知扫描角度的弧。现在我想在每个弧的中心显示标签,或者说从每个弧的中心绘制一条线。

鉴于我知道中心坐标,起始坐标,扫掠角和半径,我想计算结束坐标。

我也尝试过绘制一个匹配所有坐标的三角形并使用距离公式,但我不知道如何在java中求解方程式。

请给我一个合适的解决方案。

在矢量中工作。 设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_xA x分量(类似于A_y )。 然后

 newpoint = centre + (newpoint_x,newpoint_y) 

是你想要的。 可能是这个点看起来是以错误的方式(逆时针方向)旋转,如果是这样,只需使用

 theta = -theta 

代替。 这应该适合你。

如果要评估弧的中点,只需使用

 theta = theta / 2 
 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 

并将此矩阵应用于起始点(多重矩阵和向量)