C 给定到插值点的距离,如何在直线上插值点的位置

C 给定到插值点的距离,如何在直线上插值点的位置,c,linear-interpolation,C,Linear Interpolation,我想写一个C代码,在这里我可以找到一个点在二维坐标网格中两点之间的直线上的位置。我知道的两个点的位置,以及每个点到新的所需点的距离。然而,我不希望使用trig函数,因为事实证明它比我想要的更昂贵。我听说过使用一维插值的简单解决方案,但我不熟悉这种解决方案。有人能解释一下吗?谢谢 假设: p1是第一个点,具有坐标(p1.x,p1.y) p2是第二个点,具有坐标(p2.x,p2.y) pi是连接p1和p2的线上的插值点 d1i是从p1到pi的给定距离 di2是从pi到p2的给定距离 设d12为p

我想写一个C代码,在这里我可以找到一个点在二维坐标网格中两点之间的直线上的位置。我知道的两个点的位置,以及每个点到新的所需点的距离。然而,我不希望使用trig函数,因为事实证明它比我想要的更昂贵。我听说过使用一维插值的简单解决方案,但我不熟悉这种解决方案。有人能解释一下吗?谢谢

假设:

  • p1是第一个点,具有坐标(p1.x,p1.y)
  • p2是第二个点,具有坐标(p2.x,p2.y)
  • pi是连接p1和p2的线上的插值点
  • d1i是从p1到pi的给定距离
  • di2是从pi到p2的给定距离
设d12为p1到p2的距离。然后:d12=d1i+di2

(或者,通过毕达哥拉斯定理,d12=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y))

Let比率=d1i/d12

然后:

  • pi.x=p1.x+比率*(p2.x-p1.x)
  • pi.y=p1.y+比率*(p2.y-p1.y)

如果d1i和di2被指定为有符号距离,则这也适用,其中正距离被解释为“从p1到p2的方向”,负距离被解释为相反方向。

假设如下:

  • p1是第一个点,具有坐标(p1.x,p1.y)
  • p2是第二个点,具有坐标(p2.x,p2.y)
  • pi是连接p1和p2的线上的插值点
  • d1i是从p1到pi的给定距离
  • di2是从pi到p2的给定距离
设d12为p1到p2的距离。然后:d12=d1i+di2

(或者,通过毕达哥拉斯定理,d12=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y))

Let比率=d1i/d12

然后:

  • pi.x=p1.x+比率*(p2.x-p1.x)
  • pi.y=p1.y+比率*(p2.y-p1.y)

如果d1i和di2被指定为有符号距离,则这也适用,其中正距离被解释为“从p1到p2的方向”,负距离被解释为相反方向。

距离之间的比率与水平距离之间的比率和垂直距离之间的比率相同。差不多足够找到所有东西了。简单的几何,不是C或P编程。
xmid=(x0*xmid\u x0\u距离+x1*xmid\u x1\u距离)/(xmid\u x0\u距离+xmid\u x1\u距离)
应该这样做。同样适用于
y
。您可能会在维基百科中找到有用的信息。所有三个点都在同一条线上吗?距离之间的比率与水平距离和垂直距离之间的比率相同。差不多足够找到所有东西了。简单的几何,不是C或P编程。
xmid=(x0*xmid\u x0\u距离+x1*xmid\u x1\u距离)/(xmid\u x0\u距离+xmid\u x1\u距离)
应该这样做。同样适用于
y
。你可能会在维基百科中找到有用的信息。这三点是否都在同一条线上?