Тема: Как получить вектор касательной к AcDbCurve c направлением

Необходимо получить вектор касательной к точке на AcDbCurve.
Для этого Использовал getFirstDeriv - первая производная в точке.
Но мне сейчас необходимо, чтобы был вектор касательной направленый в направление хода кривой от startpoint к endpoint. Насколько я знаю производная этого не учитывает. А как узнать в какую сторону идет кривая в данная точке - такого функционала не нашел... Как это вычислить тоже не совсем понятно...
Вообще задача такая - надо задать ориентацию кривой. Для этого хочу сделать грип-точку на кривой. Пользователь тягает ее от кривой в нужную сторону и я смотрю в какую сторону от касательной он ее потащил и задаю "левую" или "правую" ориентацию. Но необходимо чтоб касательная была напрвлена в сторону движения от startPoint к endPoint...

Re: Как получить вектор касательной к AcDbCurve c направлением

> KonstantinM
Мне в голову пришла такая мысль:
1) Вычисляешь param в точке грипса (p) на кривой.
2) Вычисляешь точку в param-delta (p1)(delta - достаточно малое число), вычисляешь точку в param+delta (p2)
3) Находишь getFirstDeriv в p и ориентируешь его по вектору p1->p2
Конечно есть нюансы с выбором delta (наверное нужно ориентироваться по величине вектора второй производной).

Re: Как получить вектор касательной к AcDbCurve c направлением

Что-то такое, я тоже придумал.
Но возникают нюансы с startparam и endparam. Я так понял что нет гарантии, что startparam <= endparam, т.е. я могу получить (p2-p1) направленую в другую сторону. Хотя можно проверять, что если startparam > endparam, то делать delta - "отрицательной"...

Re: Как получить вектор касательной к AcDbCurve c направлением

> KonstantinM
Вообще-то startparam должно не больше чем endparam. Насколько я помню с обратной ситуацией я не сталкивался, хотя создать custom entity с противоположным поведением возможно.

Re: Как получить вектор касательной к AcDbCurve c направлением

Для будующих поколений.
Написал тесты, проверил.
Вектор касательной getFirstDeriv у AcDbCurve - всегда направлен от startParam к endParam. startParam <= endParam.

Re: Как получить вектор касательной к AcDbCurve c направлением

> KonstantinM
:) Теоретически так и должно было быть, но спасибо за тесты.