如何进行线性插值?

How to do linear interpolation?

我有一条线段,起点为 s(x1,y1),终点为 e(x2,y2)。我已经使用欧氏距离计算了 s 和 e 之间的距离 d = sqrt((x1-x2)(x1-x2) + (y1-y2)(y1-y2)) 如何找出距离d1(0 < d1 < d)的线段上的点?

线性的主题是一切都是成比例的

d1d1/d0d 的一小部分。

因此,您要查找的点 p 与 从 se 的方式。所以让r = d1/d。然后

p = (x1 + r*(x2-x1), y1 + r*(y2-y1))

注意当r等于0时,p(x1 + 0*(x2-x1), y1 + 0*(y2-y1)) = (x1, y1) = s。而当r等于1时,p就是e = (x2, y2)。当 r0 变为 1 时,ps 变为 t 线性——也就是说,作为 [的线性函数=19=].

参数线定义如下:

x(t)=x1+(x2-x1)*t;
y(t)=y1+(y2-y1)*t;
  • 其中 t<0.0,1.0>
  • 范围内的参数
  • if t=0.0 则结果为点 (x1,y1)
  • if t=1.0 则结果给出点 (x2,y2)

因此,如果您需要距起点 d 距离的点,则:

D=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
x(d)=x1+(x2-x1)*d/D;
y(d)=y1+(y2-y1)*d/D;
  • 其中 D 是行的长度
  • d是到起点的距离