Точка перегиба - это разделительная кривая, в которой обмотка кривизны идет от CW к CCW или наоборот. Поэтому сначала определите обмотку.
Предположим, что в 2D-случае ...
Если ваши точки равны { 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)
равно нулю, такая обмотка должна быть пропущена или специально обработана.