如果中心和启动坐标是众所周知的,则如何计算弧线中端点的脐带螺纹



我正在使用以已知横切角度绘制的弧形的饼图上的工作。。

鉴于我知道中心坐标,启动坐标,扫角和半径,我想计算端坐标。

我还通过绘制一个匹配所有坐标并使用距离公式的三角形来尝试此操作,但我不知道如何在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

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

最新更新