Как вычислить точку на линии в CGAL - PullRequest
5 голосов
/ 17 августа 2010

Учитывая трехмерную линию в CGAL, как мне вычислить точку на этой линии, которая является некоторым известным расстоянием от конечной точки?

1 Ответ

3 голосов
/ 17 августа 2010

Если у вас есть две точки P 0 и P 1 , вы можете сделать вектор V = P 1 - P 0 .

Учитывая расстояние D от P 0 , вы можете получить результирующую точку R = P 0 + (D ÷ || V ||) ⋅ V.

(Линейная интерполяция между строками, изменение D в процентах путем деления на полную длину строки.)


Я не знаю CGAL (а документация вроде отстой), но я предполагаю, что это будет что-то вроде этого:

Line_3<K> l = /* ... */;
Vector_3<K> v = l.to_vector();
Point_3<K> r = l.p + (d * d / v.squared_length()) * v;

Примечание. Я даже не могу найти способ получить начальную точку линии, так что она зависит от вас.(l.p часть составлена.)

...