18

我要求一个圆应该根据 number(2,3...n) 分成 N 个相等的部分。但我想要分割点的坐标。

我有一个圈子,其centre(x,y)radius(150)已知。

问题:

是否有任何公式可以提供如图所示的分割点坐标。谁能告诉我公式。我想用 Java 实现它

圆形图片供参考:

图片

4

2 回答 2

23

我已经接受了答案......这个公式非常有效。这是用Java编码的解决方案。它将帮助其他开发人员。

    private int x[];  // Class variable
    private int y[];  // Class variable

    private void getPoints(int x0,int y0,int r,int noOfDividingPoints)
    {

        double angle = 0;

        x = new int[noOfDividingPoints];
        y = new int[noOfDividingPoints];

        for(int i = 0 ; i < noOfDividingPoints  ;i++)
        {
            angle = i * (360/noOfDividingPoints);

            x[i] = (int) (x0 + r * Math.cos(Math.toRadians(angle)));
            y[i] = (int) (y0 + r * Math.sin(Math.toRadians(angle)));

        }

        for(int i = 0 ; i < noOfDividingPoints  ;i++)
        {
            Log.v("x",""+i+": "+x[i]);
            Log.v("y",""+i+": "+y[i]);

        }
    }

其中 x0 和 y0 是圆心的坐标。r 是半径。

就我而言:

输入x0 = 0 , y0 = 0 和 r = 150 , noOfDividingPoints = 5

输出

点1:(150,0)

第2点:(46,142)

点3:(-121,88)

点4:(-121,-88)

点5:(46,-142)

于 2013-09-06T11:07:54.920 回答
21

您需要在极坐标笛卡尔坐标之间进行转换。您需要的角度是将圆分成两半的(假想的)垂直线与连接中心与圆边界的线之间的角度。使用此公式,您可以计算距中心的 X 和 Y 偏移量。

在您的示例图像中,第一个角度是 0,第二个角度是 360/n。每个下一个都是i*(360/n)i 是您需要绘制的当前行的索引。应用它会按顺时针顺序为您提供 X 和 Y 偏移量(您只需将它们添加到中心的 X 和 Y 坐标即可找到每个点的坐标)

编辑:某种伪代码:

//x0, y0 - center's coordinates
for(i = 1 to n)
{
    angle = i * (360/n);
    point.x = x0 + r * cos(angle);
    point.y = y0 + r * sin(angle);
}
于 2013-09-04T10:02:57.720 回答