Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: ZorGR от 22.05.18, 08:04:19

Название: Точка на кривой, на определенном расстоянии от начала по длине кривой
Отправлено: ZorGR от 22.05.18, 08:04:19
Есть кривая в 3D (сплайн).
Нужно поставить через API точку на кривой на определенном расстоянии от начала (расстояние измеряется по длине кривой).

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

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

Вопрос. Мой способ некорректный? Как правильно построить точку на необходимом расстоянии?
Название: Re: Точка на кривой, на определенном расстоянии от начала по длине кривой
Отправлено: Sabahs от 22.05.18, 08:15:55
Так и стройте на кривой по смещению.
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;
Название: Re: Точка на кривой, на определенном расстоянии от начала по длине кривой
Отправлено: ZorGR от 22.05.18, 09:03:02
Спасибо!
Слона то я и не приметил.