目标C - 从当前时间创建角度

Jor*_*man 2 math objective-c ios

我正在尝试编写代码来在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);
Run Code Online (Sandbox Code Playgroud)

我的想法是,有些东西很时髦 M_PI,但我不知道会是什么......但正如我所说,秒,分和小时变量是正确的.它们在我的头文件中声明为int,我知道[NSDateComponents seconds](etc)返回一个NSInteger,但我不认为这对于这个基本数学来说应该是重要的.

zap*_*aph 7

由于秒,分和小时变量被声明为整数,因此除法不会为您提供正确的值.一个int除以另一个init将导致一个int,结果需要的是一个float.为了使编译器使用浮点运算,必须使其中一个操作数是浮点格式数(浮点数).

示例:10秒除以60(10/60)将使用整数数学,结果为0.
示例:10.0秒除以60(10/60)将使用浮点数学,结果为0.1.66666667.

例:

secondsTheta = ((seconds/60.0) * (2 * M_PI)) - (M_PI / 2);
Run Code Online (Sandbox Code Playgroud)

要么

secondsTheta = (((float)seconds/60) * (2 * M_PI)) - (M_PI / 2);
Run Code Online (Sandbox Code Playgroud)