我正在使用以已知横切角度绘制的弧形的饼图上的工作。。
鉴于我知道中心坐标,启动坐标,扫角和半径,我想计算端坐标。
我还通过绘制一个匹配所有坐标并使用距离公式的三角形来尝试此操作,但我不知道如何在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_x
是A
的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
并将此矩阵应用于起点(多矩阵和向量)