找到线段(矩形内部的一个点,外部的一个点)和矩形的交叉点

时间:2016-06-18 09:32:12

标签: math unity3d

我试图引导玩家到场上的最后一个敌人,通过屏幕边缘的图标指向屏幕外的最后一个敌人。

屏幕是矩形,玩家是矩形内的点,敌人是矩形外的点。

Example

我能想到的解决方案是找到哪一方将被交叉(我不确定如何正确地做,但我想首先要确定它是否会在垂直或水平两侧相交)然后使用找到x或y的线性方程。或者,您可以在每一侧使用线 - 线交叉方法,但由于屏幕矩形永远不会改变,这似乎有点矫枉过正。

我的第一个解决方案是在一个测试用例的纸上工作,但在Unity中无法使用它。

有没有人有解决方案或者可以让我朝着正确的方向前进?非常感谢。

1 个答案:

答案 0 :(得分:0)

让矩形边有等式

X = XLeft
Y = YBottom
X = XRight
Y = YTop

玩家 - 敌人矢量

D = (D.X, D.Y) = (E.X - P.X, E.Y - P.Y)

如果D.X为正,则考虑与右边缘交叉(否则为左边)

P.X + t * D.X = XRight

如果D.Y为正,则考虑与上边缘交叉(否则与底部相交)

P.Y + u * DY.Y = YTop

解决t和u的等式。如果u小于t,则首先与水平边相交,找到与表达式交叉的X坐标

XInt =  P.X + u * D.X