小编Bac*_*hey的帖子

闭合贝塞尔曲线

我实现了这样的贝塞尔曲线绘制函数:

Vector Bezier(float t)
{
    Vector rt(0,0);
    int n = length-1;
    for(int i=0;i<length;i++)
    {
        float Bi = 1;
        for(int j = 1;j<=i;j++)
        {
            Bi *= (float) (n-j+1)/j;
        }
        Bi *= pow(t,i) * pow(1-t, n-i);
        rt = rt + (Cpoints[i] * Bi);
    }
    return rt;
}

void drawBezier()
{
    int segments = 100;
    glBegin( GL_LINE_STRIP );
        for(int i=0;i<segments;i++)
        {
            float t = (float) i / segments;
            Vector p = Bezier(t);
            glVertex2f(p.x, p.y);
        }
    glEnd( );
}
Run Code Online (Sandbox Code Playgroud)

CPoints是一个包含控制点坐标的数组,长度是控制点的数量。问题是,如何使其成为闭合贝塞尔曲线,如下所示:

封闭贝塞尔曲线

c++ opengl glut freeglut

2
推荐指数
1
解决办法
2431
查看次数

标签 统计

c++ ×1

freeglut ×1

glut ×1

opengl ×1