swift - 如果向其方向延伸,向量将与屏幕相交的位置(快速)

标签 swift geometry

我正在尝试用 swift 编写一个函数,它返回一个 CGPoint,其中矢量的延伸(在屏幕内)将与屏幕相交。我们假设屏幕是 800 x 600。就像方案:

the screen scheme

该函数应具有以下参数:

func calcPoint(start: CGPoint, end: CGPoint) -> CGPoint
  • start: CGPoint(x: x1, y: y1) - 这是向量的开始。
  • end: CGPoint(x: x1, y: y1) - 这是向量的终点。
  • 返回点是向量与屏幕相交的点(CGPoint(x: x3, y: y3),如方案所示)。

矢量开始和结束的值是屏幕内的点(矩形 0、0、800、600)。

编辑(亚历山大): 是否有一个公式,在给定的情况下可以很容易地编写函数,而不是使用 if ... else ... 和三角形顶点比率的明显方式?

最佳答案

要计算点 E,您可以查看您的设置给出的三角形。你有三角形 ABC 和 DBE。请注意,它们是相似的,因此我们可以使用 intercept theorem 建立以下关系 AB : AC = DB : DE (AB等代表A和B之间的线段)。在给定的设置中,你知道除 E 之外的所有点。

enter image description here

使用给定设置的起点和终点:

enter image description here

如果开始和结束具有相同的 x 或 y 坐标,则只有顶部底部或左右边框具有相同的坐标。

使用绝对值应该适用于矩形的所有四个角。那么当然你必须考虑 E 超出你的矩形,同样可以使用相同的关系 AB : AC = D'B : D'E'

enter image description here

关于swift - 如果向其方向延伸,向量将与屏幕相交的位置(快速),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45367821/

相关文章:

python - 改进了编码,节省了如何检查Python中是否有两条线段交叉

python - HoughCircles圆检测使用opencv和python-

algorithm - 测试点是否在圆内的方程

ios - Firebase 存储为 url 返回 nil

ios - 是否可以创建一个带有原始顶点而不是混合形状的 ARFaceGeometry 实例,就像 ARSession 在使用 ARFaceTrackingConfiguration 运行时所做的那样?

ios - 为什么 UITableView 没有获得任何用户交互,因为它的 ViewController 作为 subView 添加到 UITabBarController

swift - 如何使用此代码为图像添加水印?

arrays - 如何在 Swift 中将 int 数组分配给对象数组的相应属性?

java - 如何在scala中处理列表列表并迭代添加元素

algorithm - 大量圆圈的碰撞检测