gpt4 book ai didi

ios - 将 UIView 旋转 360 度或更多

转载 作者:行者123 更新时间:2023-11-29 13:34:48 25 4
gpt4 key购买 nike

在最好的时候,我对弧度感到很困惑,所以当我旋转 UIView 时,我倾向于使用度数。到目前为止,我一直在使用以下公式将度数转换为弧度:

#define radians(x) (M_PI * x / 180.0)

到目前为止一切顺利。当我在屏幕上有一个用户正在旋转 360 度或更多的 UIView 时,问题就来了,我想在屏幕上显示图像旋转了多少度。我有这个,它可以在 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(如果可能,然后返回到 0、1、2 等)。

我可以使用将 2 加到 179、3 加到 178 等的公式来获得正确的数量,但是当我去向相反方向转动轮子时(-1 度转动会读出),这将不起作用作为 359,当我真的希望它读出为 1 或 -1 时)。

我希望这是有道理的。基本上,我想读取车轮从起点开始在每个方向转动了多少。我现在得到的是通过最短路线返回起点多少度的读数。

最佳答案

试试这段代码:

CGFloat radians = atan2f(steeringWheel.transform.b, steeringWheel.transform.a); 
if (radians < 0.0) radians += 2 * M_PI;
CGFloat degrees = radians * (180 / M_PI);

编辑:

重读您的问题后,我明白了您的问题所在。 atan2将始终返回 (−π, π) 范围内的结果。

看起来您希望方向盘能够向左旋转一个完整的圆圈,向右旋转一个完整的圆周。您可以通过比较新角度和旧角度来解决这个问题,这样您就可以知道用户是顺时针还是逆时针旋转方向盘。

您还可以在用户从起始(空闲)位置向左(逆时针)旋转轮子时设置一个标志,以相应地管理标志。

关于ios - 将 UIView 旋转 360 度或更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10864313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com