Недавно я столкнулся с тем же вопросом и хотел реализовать его самостоятельно.
Это изображение из Википедии помогло мне:
Следующий код написан на C ++ и показывает, как вычислить квадратичный Безье.
int getPt( int n1 , int n2 , float perc )
{
int diff = n2 - n1;
return n1 + ( diff * perc );
}
for( float i = 0 ; i < 1 ; i += 0.01 )
{
// The Green Line
xa = getPt( x1 , x2 , i );
ya = getPt( y1 , y2 , i );
xb = getPt( x2 , x3 , i );
yb = getPt( y2 , y3 , i );
// The Black Dot
x = getPt( xa , xb , i );
y = getPt( ya , yb , i );
drawPixel( x , y , COLOR_RED );
}
С (x1 | y1), (x2 | y2) и (x3 | y3) являются P0, P1 и P2 на изображении. Просто для того, чтобы показать основную идею ...
Для тех, кто просит кубический Безье, просто работает аналог (также из Википедии):
Этот ответ содержит код для него.