在给定一个坐标

时间:2018-01-25 21:39:51

标签: unity3d math 2d computational-geometry

我的游戏对象沿着2D平面上的路径移动,在2个点(x1,y1)和(x2,y2)之间。偶尔它会从路径上移开并需要重新放在路径上。当发生这种情况时,我会知道x坐标,但是需要在给定x坐标的路径上计算y坐标。

以下是我的意思:

example here

2 个答案:

答案 0 :(得分:3)

您有一个线段,即给定端点的所有凸组合的集合。您希望找到产生凸组合(x3,y3)的系数,其中y3未知。

t (x1,y1) + (1-t) (x2,y2) = (x3,y3)

由于x3已知,我们获得了

t = (x3 - x2) / (x1 - x2)

因此,

y3 = ((x3-x2) y1 + (x1-x3) y2) / (x1 - x2)

答案 1 :(得分:0)

2D中一条直线的一般方程是a.x + b.y + c = 0,其中向量U =( - b,a)是直线的方向向量。

因为(x1,y1)和(x2,y2)在线上,你知道:

  • a.x1 + b.y1 + c = 0
  • a.x2 + b.y2 + c = 0
  • (x2-x1,y2-y1)是该行的方向向量,所以: -b = x2-x1和a = y2-y1

所以你的线斧的一个等式+ + c = 0,其中:

  • a = y2-y1
  • b = x1-x2
  • c = -a.x1 - b.y1 = x1(y1-y2)+ y1(x2-x1)

知道a,b,c和x3,你可以很容易地找到y3:

  • y3 = - (c + a.x3)/ b

然而,请注意b = 0的情况(垂直线的情况)