Android 将圆等分为N个等分,并知道每个分界点的坐标

Android 将圆等分为N个等分,并知道每个分界点的坐标,android,math,geometry,Android,Math,Geometry,我有一个要求,一个圆应该根据数字(2,3…N)被分成N个相等的部分。但是我想要分界点的坐标 我有一个圆,其中心(x,y)和半径(150)已知 问题: 是否有任何公式可以给我如图所示的分界点坐标。有人能告诉我这个公式吗?我想用Java实现它 圆圈图像作为参考: 您需要在和坐标之间。您需要的角度是将圆一分为二的(假想的)垂直线与连接圆心与圆边界的线之间的角度。使用此公式,您可以计算从圆心的X和Y偏移 在您的示例图像中,第一个角度为0,第二个角度为360/n。每个下一个角度都是i*(360/n),其中

我有一个要求,一个圆应该根据数字(2,3…N)被分成N个相等的部分。但是我想要分界点的坐标

我有一个圆,其
中心(x,y)
半径(150)
已知

问题:

是否有任何公式可以给我如图所示的分界点坐标。有人能告诉我这个公式吗?我想用Java实现它

圆圈图像作为参考:

您需要在和坐标之间。您需要的角度是将圆一分为二的(假想的)垂直线与连接圆心与圆边界的线之间的角度。使用此公式,您可以计算从圆心的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);
}

我已经接受了答案……这个公式非常有效。 这是用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]);

        }
    }
private int x[];//类变量
私有int y[];//类变量
私有void getPoints(int x0、int y0、int r、int noOfDividingPoints)
{
双角度=0;
x=新整数[NoofDivingPoints];
y=新整数[NoofDivingPoints];
for(int i=0;i
其中x0和y0是圆心的坐标,r是半径

就我而言:

输入x0=0、y0=0和r=150,无分割点=5

输出

第1点:(150,0)

第2点:(46142)

第3点:(-121,88)

第4点:(-121,-88)


点5:(46,-142)

x=x0+sin(角度)*r,y=y0+cos(角度)*rHow表示该公式不正确,在这里的每个答案中都使用了该公式,包括已接受的答案。请为您的答案的manthanks评分。+1请填写我的表格……如果您给我返回坐标数组的公式,我将不胜感激……我一定会接受您的答案。我想传递一个数字,该数字定义了不相等的部分和r带坐标的eturn数组..@Indiandroid您应该能够将其应用于您的需要,而无需他为您进行调整。如果您自己无法做到这一点,您就不应该进行编程。@stan0 sry给您带来不便。我没有时间,所以我告诉您用java为我制作公式。但我一定会尝试您的建议…并让您知道。@stan0 sry你的公式是完美的…很快我会接受你的答案…我只需要将它转换成JAVA代码并传递正确的值…谢谢。该函数并不总是提供准确的结果,比如当你移动对象时,我想要一个半径为100,有5个NoofDivingPoints的圆touch@Syed扎希德·阿里如果你改变半径,那么点也会改变e、 …我对不同点的公式进行了测试,结果非常完美。当我选择奇数点时,结果是错误的