如何将二次贝塞尔曲线代码转换为三次贝塞尔曲线?

时间:2016-06-05 12:56:33

标签: c++ opengl directx curve bezier

所以我最近选择了图形编程,我想计算一个立方Bézier曲线。我在二次Bézier上找到this excellent answer,但我不知道如何将其转换为立方Bézier曲线。

1 个答案:

答案 0 :(得分:12)

对于立方贝塞尔曲线,正如您在共享的链接中看到的那样,绿线是从与二次曲线相同的过程中获得的。区别在于:您有两条绿线,然后您需要根据它们计算蓝线。因此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 );
}