C中的Bspline基函数

问题描述

我正在尝试使用给定的控制点来计算Bspline曲线。我已经研究了Bplsines,我要绘制的Bspline是Uniform Quadratic Bspline。但是我不确定我是否正确。请帮助我,我的困惑。如果我是对的,则每条bspline曲线的度数均由我决定。所以我希望它们是二次方的。结的数量取决于控制点的数量。 (节数=控制点数-2)。因为每个控制多边形将包含三个控制点。我正在计算结向量的函数是:

for(int i = 0; i < numOfPoints-2; i++)
{
    if(1<=i && i <= k)
        knotArray[i] = 0;
    else if(k + 1 <= i && i <= n + 1)
        knotArray[i] = i-k;
    else if(n + 2 <= i && i <= n + k + 1)
        knotArray[i] = n - k + 2;

}

我不知道这是否正确。根据我阅读的文献,计算结矢量的公式是这样的。

我用于计算基函数方法是:

t:功能参数

i:我正在计算的基函数

k :(曲线的度)+1。(在这种情况下,起点是3)

x []:结向量

float N(float t,float i,float k,float x[])
{
    if(k == 1)  //k = n + 1 (n is the degree of the curve)
    {
        if(x[i] <= t && t <= x[i+1])
            return 1;
        else
            return 0;
}


     return (t - x[i] / x[i+k-1] - x[i]) * N(t,i,k-1,x) + (x[i+k] - t / x[i+k] - x[i+1])* N(t,i+1,x);
}

Basis Function Formula

它甚至没有编译代码,我正在寻找至少3个小时的错误

如果有人可以教我Bspline曲线的基础知识,我将非常感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)