给定一个坐标,尝试沿直线找到点的二维坐标

Trying to find 2D coordinates of point along straight line, given one coordinate

我有一个游戏对象,它沿着二维平面上的路径在 2 个点 (x1,y1) 和 (x2,y2) 之间移动。有时它会离开路径,需要放回原处。发生这种情况时,我会知道 x 坐标,但需要在给定 x 坐标的情况下沿路径计算 y 坐标。

这是我的意思的一个例子:

你有一条线段,即给定端点的所有凸组合的集合。您想找到产生凸组合 (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)

二维直线的一般方程是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

所以你的线 ax + by + 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 的情况(垂直线的情况)