Swift 从一个圆的中心到另一个圆的边缘画一条线

Swift Draw a line from center of one circle to the edge of another

我正在尝试在 swift 中绘制一个 UIBezierPath,我可以让它从一个圆心到另一个圆心,但我真正想要的是让这条线停在圆心的边缘结束圆,但如果直线延伸到圆心而不是在边缘处停止,则在直线与圆边缘相交的点。

我需要以某种方式计算直线和圆之间的交点。当圆是宽度和高度为 30(所以半径为 15)的 UIImageView 并且我现在是两个圆的中心坐标时,我将如何做到这一点。

我找到了解决办法。

从现在称为 (x, y) 和 (x2, y2) 的 x 和 y(圆心)集合,可以创建一个向量,即 (x2 - x, y2 - y) 其中 x2 - x i 将调用 a 和 y2 - y i 将调用 b 然后向量的距离可以计算为 sqrt(a^2 + b^2) 其中 i 的结果将调用 dist。

据此可以用 (a/dist, b/dist) 制作一个单位矢量,现在我需要做的就是得到箭头的新坐标是 (x,y)坐标和 (x2 + ra/dist, y2 + rb/dist) 作为终点坐标,其中 r 是 (x2, y2) 处圆的半径。