如何使用UIBezierPath基于小数绘制弧

时间:2017-01-30 19:30:18

标签: ios objective-c trigonometry

我有一个圆圈,我从-pi / 2到3(pi)/ 2开始画一个完整的圆圈。在它的顶部,我有一个基于它接收的十进制值围绕圆圈的弧。所以0.5的值应该填满圆圈,0.9应该围绕圆圈90%等等。

我知道弧线的起始角度与第一个圆圈(即-pi / 2)相同,但我如何计算我的终止角度?

1 个答案:

答案 0 :(得分:2)

让我们举个例子。假设您的百分比系数为0.5。整圆是2*pi弧度。现在乘以你的百分比系数:0.52*pi*0.5弧度(恰好是pi)。但您想从-pi/2开始,请添加:pi-pi/2pi/2。因此,您可以从-pi/2开始,到pi/2结束。

现在让我们来做0.9示例。它是一样的:您可以从-pi/2开始,到2*pi*0.9 - pi/2结束。

作为一个完整性检查,这是我在使用这些数字实际绘制 0.9示例时得到的结果(这是Swift代码,但我不认为这将证明是任何困难):

let b = UIBezierPath(arcCenter: CGPoint(x:100,y:100), radius: 50, 
                     startAngle: -.pi/2, endAngle: 2*(.pi)*0.9 - .pi/2, 
                     clockwise: true)

enter image description here

这是一张图表,您可以用它来进行进一步的健全性检查(但请注意,因为他们选择使数字逆时针增长):

enter image description here

请记住,如果需要,您可以随时添加或减去2 * pi以将相同的值从负值转换为正值,反之亦然。因此-pi / 2和3 * pi / 2最终将你带到圈子的同一个地方。