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

Posted

技术标签:

【中文标题】Swift 从一个圆的中心到另一个圆的边缘画一条线【英文标题】:Swift Draw a line from center of one circle to the edge of another 【发布时间】:2020-05-13 07:55:59 【问题描述】:

我正在尝试快速绘制一个 UIBezierPath,我可以让它从一个圆的中心转到另一个圆的中心,但我真正想要的是让线停在结束圆的边缘,但在如果线继续到圆的中心并且不在边缘处停止,则线与圆边缘相交的点。

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

【问题讨论】:

你能通过图片展示吗?你想画什么?请附上图片 你还在寻找答案吗? 是的,我仍在寻找答案,所以如果你现在有办法移动箭头,我将非常感激 到目前为止你有没有尝试过? 我已经尝试为线 (x2, y2) + t * (x2 - x1, y2 - y1) 制作向量,问题在于 t 不是常数,所以我需要一种方法找出我制作的每一行的正确 t 是什么。而且我不确定如何弄清楚 t 应该是什么。 【参考方案1】:

我找到了解决办法。

从现在称为 (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 + r a/dist, y2 + rb/dist) 作为终点坐标,其中 r 是圆在 (x2, y2) 处的半径。

【讨论】:

以上是关于Swift 从一个圆的中心到另一个圆的边缘画一条线的主要内容,如果未能解决你的问题,请参考以下文章

画一个圆的半径和点周围的边缘

从两个按钮之间的手势画一条线

在 Swift 3.x 中使用 UIBezierPath 画一条线

如何在swift中以最简单的方式画一条线

SwiftUI:在列表中的两个视图之间画一条线/如何确定视图的中心位置?

从 UIViewController 画一条线