将点放在具有相同距离的圆上总是从同一点开始

时间:2014-02-04 20:25:41

标签: ios math

我已经知道如何将相同距离的点放在圆圈顶部:

double slice = 2 * M_PI / [icons count];    
for (int i = 0; i < [icons count]; i++)
{
    double angle = slice * i;
    int newX = (int)(cen.x + rad * cos(angle));
    int newY = (int)(cen.y + rad * sin(angle));
    CGPoint point = CGPointMake(newX, newY);
}

根据数组中元素的数量,点的位置总是不同(当然)但是如何设置将第一个点始终放在圆圈上的相同位置,例如在圈子的最顶端?

1 个答案:

答案 0 :(得分:1)

为角度添加常量值。这些点应该从原点右侧开始(在标准的笛卡尔坐标系中,0,0位于中心,X和Y向右和向上增加。)

要将第一个点移到顶部,请将pi / 2添加到角度。

看起来你正在使用iOS坐标,其中0,0位于sceen的左上角,Y增加DOWN,这会翻转X轴上的正常笛卡尔坐标。因此,您需要从角度减去pi / 2:

double slice = 2 * M_PI / [icons count];    
for (int i = 0; i < [icons count]; i++)
{
    double angle = slice * i - M_PI_2;
    int newX = (int)(cen.x + rad * cos(angle));
    int newY = (int)(cen.y + rad * sin(angle));
    CGPoint point = CGPointMake(newX, newY);
}