我正在尝试用 swift 编写一个函数,它返回一个 CGPoint,其中矢量的延伸(在屏幕内)将与屏幕相交。我们假设屏幕是 800 x 600。就像方案:
该函数应具有以下参数:
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 之外的所有点。
使用给定设置的起点和终点:
如果开始和结束具有相同的 x 或 y 坐标,则只有顶部底部或左右边框具有相同的坐标。
使用绝对值应该适用于矩形的所有四个角。那么当然你必须考虑 E 超出你的矩形,同样可以使用相同的关系 AB : AC = D'B : D'E'
关于swift - 如果向其方向延伸,向量将与屏幕相交的位置(快速),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45367821/