如何避免这种程度的弧度误差?

时间:2012-11-22 06:43:58

标签: iphone core-animation core-plot pie-chart

在使用核心图创建饼图时,我为给定代码添加了动画

    CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform"];
   CATransform3D transform = CATransform3DMakeRotation(DegreesToRadians(360), 0, 0, 1);
   rotation.toValue = [NSValue valueWithCATransform3D:transform];  
    rotation.duration = 10.0f;
    [pieChart addAnimation:rotation forKey:@"rotation"];    

此代码提供以下错误语义问题:

Implicit declaration of function 'DegreesToRadians' is invalid in C99

我可以做些什么来避免这种情况?

并且运行时它会产生以下错误:

Apple_o  Linker id error  "_DegreesToRadians", referenced from:

谢谢和问候

维贾雅库马尔

Rhytha的iOS开发人员

https://rhytha.com/

3 个答案:

答案 0 :(得分:22)

只需定义一个宏,如:

#define DEGREES_RADIANS(angle) ((angle) / 180.0 * M_PI)

改变你的方法,如:

CATransform3D transform = CATransform3DMakeRotation(DEGREES_RADIANS(360), 0, 0, 1);

答案 1 :(得分:0)

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

将此代码写在要转换的.m文件的顶部

让我知道它是否有效

答案 2 :(得分:0)

对于简单的角度,只需使用弧度:

Transform3D transform = CATransform3DMakeRotation(2 * M_PI, 0, 0, 1);

典型角度的快速列表:

Degrees | Code
--------+---------
360     | 2 * M_PI
180     | M_PI
90      | M_PI_2
45      | M_PI_4