如何在Objective-C中将点转换为弧度?

时间:2017-01-28 00:27:57

标签: ios objective-c radians

在我的应用中,我使用UIBezierPath将圆弧绘制成圆形。我试图将数字与弧度相关联。因此,让我们说用户有一定数量的积分,积分上限为100点。我希望100分为360度。我希望圆圈的前33%是绿色,然后从34%到圆圈的下一个66%用橙色抚摸,然后从67%到100%用红色抚摸。

我在这里遇到的问题是将圆圈的百分比转换为弧度。在创建UIBezier路径时,我需要提供一个startAngle和endAngle,并且我在将这些点转换为弧度值时遇到了一些麻烦。

我将如何解决这个问题?

由于

3 个答案:

答案 0 :(得分:0)

CGFloat radians = percent * 0.01 * 2 * M_PI;

简单代数。

答案 1 :(得分:0)

我认为你想要的是单位圈。使用单位圆时,还记得回到三角学吗?这同样适用于此。如果你需要得到π - 在Swift中只说let π = CGFloat.pi(对特殊字符保持alt + p)。在Objective-C中 - 我认为它是CGFloat π = M_PI;

enter image description here

您可以在前1/3从0到2π/3,然后从2π/34π/3,然后从4π/3(完整)圆圈)。

我不应该让我没有制作这个图形 - 它来自RayWenderlich.com的教程 - 但它完全适用于iOS坐标系。

答案 2 :(得分:0)

目标-C

CGFloat fullCircle = 2 * M_PI ;             // M_PI Pi number which is half of the circle in radian
CGFloat startPoint = 0.0      ;
CGFloat endPoint   = fullCircle * 0.33 ;

// Assuming circling clockwise

// .... Draw first step UIBezierPath

startPoint = endPoint        ;
endPoint = startPoint + fullCircle * 0.33 ;
// .... Draw second step UIBezierPath

startPoint = endPoint        ;
endPoint = fullCircle - startPoint ;       // This to make sure the whole circle will be covered
// .... Draw the last step UIBezierPath

夫特

let fullCircle = 2 * M_PI             // M_PI Pi number which is half of the circle in radian
var startPoint: Float = 0.0
var endPoint: Float = fullCircle * 0.33

// Assuming circling clockwise
// .... Draw first step UIBezierPath

startPoint = endPoint
endPoint = startPoint + fullCircle * 0.33
// .... Draw second step UIBezierPath

startPoint = endPoint
endPoint = fullCircle - startPoint       // This to make sure the whole circle will be covered
// .... Draw the last step UIBezierPath