Russian Qt Forum

Qt => Общие вопросы => Тема начата: Hrundel от Апрель 01, 2014, 21:18



Название: [РЕШЕНО] Как расчитать нормаль к кривой QPainterPath в заданой точке?
Отправлено: Hrundel от Апрель 01, 2014, 21:18
Всем привет,

программа рисует кривые Бизье и аппроксимирует нативным методом QPointF QPainterPath::pointAtPercent ( qreal t ) const;
Вопрос - есть ли возможность расчитать нормаль заданой длины к любой точке кривой QPainterPath? В обе стороны.
На выходе нужны только координаты нормали в верхней точке. На кривой они и так известны.

Спасибо.


Название: Re: Как расчитать нормаль к кривой QPainterPath в заданой точке?
Отправлено: Igors от Апрель 02, 2014, 09:37
Никогда не работал QPainterPath, но есть градиентный метод
Код
C++ (Qt)
QPointF p0 = path.pointAtPercent(t);
QPointF p1 = path.pointAtPercent(t + dt);
 
Тогда разница p1-p0 = касательная в точке, повернутая на PI/2 = нормаль. Более гладкий рез-т дает "вторая разница"  F(t + dt) - F(t - dt). Шаг dt должен быть достаточно мал но не с потерей точности (это типовая проблема).


Название: Re: Как расчитать нормаль к кривой QPainterPath в заданой точке?
Отправлено: Hrundel от Апрель 02, 2014, 11:06
Спасибо Игорь,

тоже вчера ночью к этому решению пришел. Уже думал, если никто не ответил - удалю тему.