在最好的情况下,我对弧度感到很困惑,所以当我旋转 UIView 时,我倾向于以度数工作。到目前为止,我一直在使用以下公式将度数转换为弧度:
#define radians(x) (M_PI * x / 180.0)
到现在为止还挺好。当我在屏幕上有一个 UIView 用户正在旋转 360 度或更多时,问题就出现了,我想在屏幕上显示图像旋转了多少度。我有这个,它可以正常工作到 180 度:
float rot = [recognizer rotation];
[self.steeringWheel setTransform:CGAffineTransformRotate([self.steeringWheel transform], (rot))]; // turn wheel
CGFloat radians = atan2f(steeringWheel.transform.b, steeringWheel.transform.a);
CGFloat degrees = radians * (180 / M_PI);
self.degreesBox.text = [NSString stringWithFormat:@"%1.0f", degrees]; // show degrees of rotation on screen
180 度后,我的读数变为 -179、-178 等,一直回到零。相反,我希望它继续计数到 359(如果可能,然后回到零、1、2 等)。
我可以使用将 2 加到 179、3 加到 178 等的公式来获得正确的数量,但是当我然后去向相反方向转动车轮时,这将不起作用(-1 度转动读数为 359,当我真的希望它读出为 1 或 -1 时)。
我希望这是有道理的。基本上,我想了解车轮从起点开始在每个方向上转动了多少。我现在得到的是通过最短路线返回起点的度数。