如何将二次贝塞尔曲线代码转换成三次贝塞尔曲线?
How to convert quadratic bezier curve code into cubic bezier curve?
所以我最近开始学习图形编程,我想计算三次贝塞尔曲线。我在二次贝塞尔曲线上找到了 this excellent answer,但我不知道如何将其转换为三次贝塞尔曲线。
对于三次贝塞尔曲线,正如您在分享的 link 中看到的那样,绿线是通过与二次曲线相同的过程获得的。不同之处在于:你有两条绿线,然后你需要根据它们计算一条蓝线。所以 for
循环变为:
for( float i = 0 ; i < 1 ; i += 0.01 )
{
// The Green Lines
xa = getPt( x1 , x2 , i );
ya = getPt( y1 , y2 , i );
xb = getPt( x2 , x3 , i );
yb = getPt( y2 , y3 , i );
xc = getPt( x3 , x4 , i );
yc = getPt( y3 , y4 , i );
// The Blue Line
xm = getPt( xa , xb , i );
ym = getPt( ya , yb , i );
xn = getPt( xb , xc , i );
yn = getPt( yb , yc , i );
// The Black Dot
x = getPt( xm , xn , i );
y = getPt( ym , yn , i );
drawPixel( x , y , COLOR_RED );
}
所以我最近开始学习图形编程,我想计算三次贝塞尔曲线。我在二次贝塞尔曲线上找到了 this excellent answer,但我不知道如何将其转换为三次贝塞尔曲线。
对于三次贝塞尔曲线,正如您在分享的 link 中看到的那样,绿线是通过与二次曲线相同的过程获得的。不同之处在于:你有两条绿线,然后你需要根据它们计算一条蓝线。所以 for
循环变为:
for( float i = 0 ; i < 1 ; i += 0.01 )
{
// The Green Lines
xa = getPt( x1 , x2 , i );
ya = getPt( y1 , y2 , i );
xb = getPt( x2 , x3 , i );
yb = getPt( y2 , y3 , i );
xc = getPt( x3 , x4 , i );
yc = getPt( y3 , y4 , i );
// The Blue Line
xm = getPt( xa , xb , i );
ym = getPt( ya , yb , i );
xn = getPt( xb , xc , i );
yn = getPt( yb , yc , i );
// The Black Dot
x = getPt( xm , xn , i );
y = getPt( ym , yn , i );
drawPixel( x , y , COLOR_RED );
}