2015-02-17 3 views
0

У меня есть отрезок линии с началом s (x1, y1) и end e (x2, y2). Я вычислил расстояние между s и e, используя эвклидовое расстояние d = sqrt ((x1-x2) (x1-x2) + (y1-y2) (y1-y2)) Как найти точку на линии сегмент на расстоянии d1 (0 < d1 < d)?Как сделать линейную интерполяцию?

ответ

0

Основная тема линейности заключается в том, что все пропорционально.

d1 является d1/d доля пути от 0 до d.

Таким образом, точка, p, что вы ищете одно и то же доля пути от s к e. Так давайте 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). Так как r идет от 0 до 1, p идет от s до t линейно - то есть, как линейная функция от r.

0

параметрическая линия определяется следующим образом:

x(t)=x1+(x2-x1)*t; 
y(t)=y1+(y2-y1)*t; 
  • где t является параметром в диапазоне <0.0,1.0>
  • , если t=0.0 то результат дает точку (x1, y1)
  • , если t=1.0 то результат дает точку (x2, y2)

Так что, если вам нужно точку на расстоянии г от начала, то:

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 является расстояние от начальной точки