我正在尝试编写代码以在 iOS 设备的屏幕上绘制时钟。我需要从当前时间获取一条线的角度(秒、分、时针)。我的代码准确地捕获了时间,但出于某种原因,我收到的所有角度最终都是相同的(无论是什么时间)。
如果有帮助,我不断收到的角度是:
-1.5707963267948966
这是我用来获取角度的代码:
secondsTheta = ((seconds/60) * (2 * M_PI)) - (M_PI / 2);
minutesTheta = ((minutes/60) + (seconds/3600)) * (2 * M_PI) - (M_PI / 2);
hoursTheta = ((hours/12) + (minutes/720) + (seconds/43200)) * (2 * M_PI) - (M_PI / 2);
我的想法是 M_PI
有点古怪,但我不知道会是什么……但正如我所说,秒、分钟和小时变量是正确的。它们在我的头文件中声明为 ints,并且我知道 [NSDateComponents seconds]
(etc) 返回一个 NSInteger,但我认为这与此无关基础数学。
最佳答案
由于秒、分和小时变量被声明为整数,因此除法不会为您提供正确的值。一个 int 除以另一个 init 将得到一个 int,结果需要的是一个 float 。为了让编译器使用浮点运算,其中一个操作数必须是浮点格式数字 (float)。
示例:10 秒除以 60 (10/60) 将使用整数数学并得出 0。
示例:10.0 秒除以 60 (10/60) 将使用 float 学并得出 0.1.66666667。
例子:
secondsTheta = ((seconds/60.0) * (2 * M_PI)) - (M_PI / 2);
或
secondsTheta = (((float)seconds/60) * (2 * M_PI)) - (M_PI / 2);
关于objective-c - Objective-C - 从当前时间创建角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7615251/