16

你将如何计算 Swift 中圆边缘上两点之间的度数。

在此处输入图像描述

4

1 回答 1

35

给定 points p1p2在一个有 center 的圆上center,首先计算差分向量:

let v1 = CGVector(dx: p1.x - center.x, dy: p1.y - center.y)
let v2 = CGVector(dx: p2.x - center.x, dy: p2.y - center.y)

然后

let angle = atan2(v2.dy, v2.dx) - atan2(v1.dy, v1.dx)

是这些向量之间的(有向)角度,以弧度表示,并且

var deg = angle * CGFloat(180.0 / M_PI)

以度为单位的角度。计算值可以在 -360 .. 360 范围内,因此您可能希望将其标准化为范围 0 <= deg < 360

if deg < 0 { deg += 360.0 }
于 2015-02-21T03:21:39.757 回答