Есть кривая в 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;
Спасибо!
Слона то я и не приметил.