如何在UIBezierPath弧中获取半径的中心点?

时间:2018-02-22 02:40:08

标签: ios objective-c uibezierpath cashapelayer cgpoint

我有目标c申请。在ViewController中我有一个UIView,在这个视图中我用UIBezierPath绘制了一个带有这段代码的圆圈:

CAShapeLayer* clockWiseLayer = [[CAShapeLayer alloc] init];
        clockWiseLayer.path = [UIBezierPath bezierPathWithArcCenter:centerPoint
                                                              radius:radius
                                                          startAngle:startAngle
                                                            endAngle:endAngle
                                                           clockwise:YES].CGPath;

然后我想要知道点到部分的中心或半径的中心到部件弧的中心是这样的:

enter image description here

我怎样才能明白这一点?如果我知道结束,角度开始,半径大小该点的值是什么,我该如何计算?

1 个答案:

答案 0 :(得分:3)

所有这些只是一些基本的三角函数。

首先得到弧心的角度:

normalEnd = endAngle < startAngle ? endAngle + 2 * pi : endAngle
centerAngle = startAngle + (normalEnd - startAngle) / 2

然后计算弧心相对于中心点的x和y坐标:

arcCenterX = centerPoint.x + cos(centerAngle) * radius
arcCenterY = centerPoint.y + sin(centerAngle) * radius

现在您有一个线段的终点,并且您想要该线段的中心:

desiredPointX = (centerPoint.x + arcCenterX) / 2
desiredPointY = (centerPoint.y + arcCenterY) / 2