Точка на кривой, на определенном расстоянии от начала по длине кривой

Автор ZorGR, 22.05.18, 08:04:19

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

ZorGR

Есть кривая в 3D (сплайн).
Нужно поставить через API точку на кривой на определенном расстоянии от начала (расстояние измеряется по длине кривой).

Получаю от кривой интерфейс ksCurve3D.
Получаю TMin, TMax, L (полная длина кривой).
Долее вычисляю по формуле необходимый параметр t = (TMax - TMin) * l / L, где l необходимая длина.
Используя GetPoint нахожу координаты точки по вычисленному t.
Строю точку по координатам.

Теперь если измерить расстояние от начала кривой до построенной точки (по кривой), то оно не будет равно заданному (отличие на несколько миллиметров).

Вопрос. Мой способ некорректный? Как правильно построить точку на необходимом расстоянии?

Так и стройте на кривой по смещению.
if pPoints3D<>nil then pPoint3D:=pPoints3D.Add;
if pPoint3D<>nil then
begin
     pPoint3D.ParameterType:=ksPCurve;
     pPoint3DParamCurve:=pPoint3D.Parameters as IPoint3DParamCurve;
     if pPoint3DParamCurve<>nil then
      begin
          pPoint3DParamCurve.SetCurveObject(Obj as IModelObject);
          pPoint3DParamCurve.Offset:=0;
          pPoint3DParamCurve.Direction:=True;
          pPoint3D.Update;                 
      end;
end;
+ Благодарностей: 1

ZorGR