android将圆分成N个相等的部分并知道每个分界点的坐标

The*_*ash 16 math geometry android

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

我有一个圆圈,centre(x,y)并且radius(150)已知.

题:

是否有任何公式给出了分割点的坐标,如图所示.谁能告诉我这个公式.我想用Java实现它.

用于参考的圆形图像:

图片

The*_*ash 22

我已经接受了答案......这个公式很完美.这是用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]);

        }
    }
Run Code Online (Sandbox Code Playgroud)

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

就我而言:

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

产量

第1点:(150,0)

第2点:(46,142)

第3点:( - 121,88)

point4:( - 121,-88)

第5点:(46,-142)


sta*_*an0 19

您需要在极坐标笛卡尔坐标之间进行转换.你需要的角度是将圆圈分成两半的(假想的)垂直线与连接圆心的边界线之间的角度.使用此公式,您可以计算中心的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);
}
Run Code Online (Sandbox Code Playgroud)