我已经知道如何将相同距离的点放在圆的顶部:
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,0 位于中心,X 和 Y 向右和向上增加。)
要将第一个点移到顶部,请将 pi/2 添加到您的角度。
看起来您正在使用 iOS 坐标,其中 0,0 位于屏幕的左上角,Y 向下增加,这会翻转 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);
}
关于ios - 在圆上放置相同距离的点总是从同一点开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21562644/