Если у вас есть две точки 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
часть составлена.)