objective-c - Objective-C - 从当前时间创建角度

标签 objective-c ios math

我正在尝试编写代码以在 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/

相关文章:

ios - 当我们收到推送通知时如何打开或关闭?

list - Dart 程序将列表中给定数字的连续数字分组 <list>

ios - 摆脱表格 View 单元格中的重叠图像

ios - 如何给 UIBarButtonItem 添加边框

ios - 保存在 UIImageView 中显示的图像

iphone - 如何在调试期间在 iPad 中保持相同的 iPhone 应用尺寸

iphone - 我如何通过应用程序在 iOS 的桌面上创建快捷方式

objective-c - 在 Swift 类中调用 Objective-C 类

Javascript 数学舍入

python - 新的 Pandas 产品/求和逻辑