Я работаю над чем-то, что может соответствовать набору кривых Безье через набор точек. Я смог сделать это, используя метод подбора кривой из Pomax. Проблема с этим методом заключается в том, что он не может провести кривую Безье низкого порядка через линию, имеющую много перегибов. Поэтому, чтобы выполнить эту работу, мне нужно иметь возможность получить кусочно-кубическую безье, разделив кривую в ее точках перегиба, а затем запустив оттуда алгоритм подгонки кривой. Проблема в том, что я не знаю, как найти производную набора точек, у которых нет четкой функции. Думаю, я всегда мог вычислить наклон секущей вместо касательной, но не уверен, что это сработает. Есть ли у кого-нибудь лучшие идеи о том, как найти точки перегиба набора точек?
Нахождение точек перегиба множества точек
comment
это 2D или 3D или ND?
- person Spektre   schedule 03.02.2020
Ответы (1)
Точка перегиба является разделительной кривой, где кривизна обмотки идет от CW к CCW или наоборот. Итак, сначала определите обмотку.
Предположим, что это двухмерный случай...
Если ваши точки { p0,p1,p2,...,p(n-1) }
, то обмотка в p(i)
является sign
из z
координаты 3D cross
произведения двух последовательных касательных:
w(i) = cross (
( p(i).x-p(i-1).x , p(i).y-p(i-1).y , 0)
( p(i+1).x-p(i).x , p(i+1).y-p(i).y , 0)
).z
Итак, если p(i)
является гибким, то:
w(i)*w(i-1) < 0
Проблема в том, что если w(i)
или w(i-1)
равно нулю, такую обмотку нужно пропустить или обрабатывать особым образом.
person
Spektre
schedule
03.02.2020