已知由m×n个型值点反算出来的(m+2)×(n+2)个控制点,如何循环取4×4个控制点生成封闭的B样条曲面呢?渴望高手回复!能不能给出稍微详细的说明或者是for循环?

解决方案 »

  1.   

    B样条曲线的程序一搜一陀,你可以看看施法中的有关B样条的书。
    ps:看到一个回复倍高兴,以为终于有人给个方法了,一看原来是......汗一个!
      

  2.   

    看施法中的书
    里面的B样条和NURBS程序我都写好了
    认真看看书,写程序不难
      

  3.   

    Y___Y(一叶障目) :
    大哥,问你有关NURBS的一些情况。。
    施法中那本必须从头看到NURBS曲线(我只要曲线)那章才能写出NURBS程序吗?NURBS具体算法是在哪章,哪页?我现在比较急用,所以如果完全看书的话,没那么多的时间了。
    谢谢了!!!!我现在想走些捷径呵呵(我给你发了个短消息)
      

  4.   

    参考一下B样条曲线的程序,参数意义跟书中的类似
    //德布尔算法计算B样条曲线
    inline double alpha(int l,int j,int k,double su[],double u)
    {
    if(fabs(su[j+k+1-l]-su[j])<eps) return 0.0;
    return (u-su[j])/(su[j+k+1-l]-su[j]);
    }
    double d1(int l,int j,int k,double su[],double d[],double u)
    {
    if(l<=0) return d[j];
    double a=alpha(l,j,k,su,u);
    return (1-a)*d1(l-1,j-1,k,su,d,u)+a*d1(l-1,j,k,su,d,u);
    }
    double BSL(int k,double su[],double d[],int n,double u)
    {
    int i;
    for(i=1;i<n+k;i++)
    {
    if(u<su[i]) break;
    if(i>k&&u==su[i]) break;
    }
    i--;
    return d1(k,i,k,su,d,u);
    }
      

  5.   

    Y___Y(一叶障目) :
    大哥,我现在要的是NURBS..B样条不是NURBS的特例吗
    NURBS程序跟你给的B样条程序差不多吗?
    THANKS!!
      

  6.   

    Y___Y(一叶障目) :
    NURBS中有权因子,因此其算法跟德布尔算法计算B样条曲线不大一样吧??能够直接用那个算法吗?
    我现在准备用 p(u)=M(wi*di*Ni,k(U))/M(wi*Ni,k(U))--其中M表示求和,也就是用齐次坐标表示法来计算。公式在PAGE314。程序必须先对B样条基进行计算,然后再计算点坐标。
    你看行的通吗?
      

  7.   

    不能直接用德布尔算法计算NURBS,按普通的方法算吧
    普通的方法还简单一点
      

  8.   

    我在做NURBS拟合方面的课题,如果有研究这方面的朋友,希望一起交流,QQ6217883