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

Fai*_*yed -1 trigonometry objective-c ios

我有一个从 -pi/2 到 3(pi)/2 开始绘制的圆,以形成一个完整的圆。在它的顶部,我有一个弧线,它根据收到的十进制值绕圆旋转。因此,值 0.5 应该填充圆的一半,0.9 应该填充圆的 90%,等等。

我知道我的弧的起始角度将与第一个圆相同(即 -pi/2),但是我将如何计算我的结束角度?

mat*_*att 5

我们来举个例子。假设您的百分比系数是0.5。一个完整的圆是2*pi弧度。现在乘以你的百分比因子:0.5其中是2*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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是一个图表,您可以使用它进行进一步的健全性检查(但要小心,因为他们选择让数字逆时针增长):

在此输入图像描述

请记住,如果需要,您始终可以添加或减去 2*pi 将相同的值从负数转换为正数,反之亦然。因此 -pi/2 和 3*pi/2 最终将带您到达圆上的同一个位置。