答案 0 :(得分:0)
根据您的评论,您似乎想要确定给定旋转的五个圆的中心坐标。这些中心都将躺在一个圆圈上。因此,您的问题归结为半径为 r 的圆上的点的坐标为θ。圆的参数方程为您提供:
x = r cos θ
y = r sin θ
这些方程中的角度θ是以逆时针方向从正x轴以弧度测量的。如果您的角度以度为单位,您会发现π的M_PI
常量有用:
360度= 2 π弧度
其余的是简单的数学运算,取你的旋转角度给你A的角度(记住调整0为x轴,如果需要则逆时针测量),其他中心是72度的倍数( 0.4 π弧度)。
HTH
答案 1 :(得分:0)
我不确定我是否完全理解您的问题,但如果您只需要知道一个已知点并将其旋转一定度数,请查看CGAffineTransform的文档。
例如:
CGAffineTransform rotation = CGAffineTransformMakeRotation (angle);
CGPoint rotatedPoint = CGPointApplyAffineTransform (startingPoint, rotation);
此旋转矩阵在(0,0)左右,角度以弧度为单位,因此您需要减去超视图边界的中心以获得相对于中心的偏移,进行旋转,以及加回到中心。或者,您可以构建由平移,旋转和反向平移组成的仿射变换,然后将其应用于上述起点。
答案 2 :(得分:0)
鉴于您似乎已经知道主旋转角度,这将为您提供-180 ... +80范围内的角度以及每个白色圆盘的位置:
GCFloat toRads = M_PI / 180.0;
CGFloat angleA = self.rotationInDegrees;
if (angleA > 180) angleA -= 360;
CGFloat xA = self.radius * sinf(angleA * toRads);
CGFloat yA = self.radius * cosf(angleA * toRads);
CGFloat angleB = angleA + 72;
if (angleB > 180) angleB -= 360;
CGFloat xB = self.radius * sinf(angleB * toRads);
CGFloat yB = self.radius * cosf(angleB * toRads);
etc...
(这假设您的零度是垂直的。如果它来自水平交换cos并且罪过了)。