На самом деле я не понимаю, как вы берете производную и помещаете ее в плавающее число.Это потому, что кривая Бизье является двумерной параметрической кривой (она имеет компоненты x и y).Это не функция y (x).В кубическом случае это:
x(t) = x0 + x1*t + x2*t*t + x3*t*t*t
y(t) = y0 + y1*t + y2*t*t + y3*t*t*t
Назовем это form1.Так что на самом деле это не более чем два полинома третьего порядка.Традиционная форма кубической кривой Безье имеет вид
. Обратите внимание, что здесь B (t) - это двумерный вектор (x (t), y (t)).Так, если у вас есть кривая Безье, определенная традиционным способом, вы можете преобразовать ее в форму form1, вычислив коэффициенты x0, x1 и son.
Если теперь у вас есть кривая Безье, определенная в форме form1, очень легко взять производную:
x'(t) = x1 + 2*x2*t + 3*x3*t*t
y'(t) = y1 + 2*y2*t + 3*y3*t*t
Теперь вектор (x '(t), y' (t)) - это скорость на кривой Безье.Это также касательный вектор к вашей кривой.Перпендикулярный вектор будет (-y '(t), x' (t)) или ((y '(t), - (x' (t)).
Вот коэффициенты:
Для коэффициентов y формула полностью идентична, она просто будет py0, py1, py2, py3 вместо px0, ....