我已经知道如何将相同距离的点放在圆圈顶部:
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);
}
根据数组中元素的数量,点的位置总是不同(当然)但是如何设置将第一个点始终放在圆圈上的相同位置,例如在圈子的最顶端?
答案 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);
}