【问题标题】:Trying to find 2D coordinates of point along straight line, given one coordinate给定一个坐标,试图沿着直线找到点的二维坐标
【发布时间】:2018-01-25 21:39:50
【问题描述】:

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

这是我的意思的说明:

【问题讨论】:

    标签: unity3d math 2d computational-geometry


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      二维直线的一般方程是 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 的情况(垂直线的情况)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        • 2012-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多