封闭B样条曲面生成 已知由m×n个型值点反算出来的(m+2)×(n+2)个控制点,如何循环取4×4个控制点生成封闭的B样条曲面呢?渴望高手回复!能不能给出稍微详细的说明或者是for循环? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 B样条曲线的程序一搜一陀,你可以看看施法中的有关B样条的书。ps:看到一个回复倍高兴,以为终于有人给个方法了,一看原来是......汗一个! 看施法中的书里面的B样条和NURBS程序我都写好了认真看看书,写程序不难 Y___Y(一叶障目) :大哥,问你有关NURBS的一些情况。。施法中那本必须从头看到NURBS曲线(我只要曲线)那章才能写出NURBS程序吗?NURBS具体算法是在哪章,哪页?我现在比较急用,所以如果完全看书的话,没那么多的时间了。谢谢了!!!!我现在想走些捷径呵呵(我给你发了个短消息) 参考一下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); } Y___Y(一叶障目) :大哥,我现在要的是NURBS..B样条不是NURBS的特例吗NURBS程序跟你给的B样条程序差不多吗?THANKS!! Y___Y(一叶障目) :NURBS中有权因子,因此其算法跟德布尔算法计算B样条曲线不大一样吧??能够直接用那个算法吗?我现在准备用 p(u)=M(wi*di*Ni,k(U))/M(wi*Ni,k(U))--其中M表示求和,也就是用齐次坐标表示法来计算。公式在PAGE314。程序必须先对B样条基进行计算,然后再计算点坐标。你看行的通吗? 不能直接用德布尔算法计算NURBS,按普通的方法算吧普通的方法还简单一点 我在做NURBS拟合方面的课题,如果有研究这方面的朋友,希望一起交流,QQ6217883 DLL调用程序/ISAPI扩展怎样添加一个可视化界面? 如何在单文档窗口下创建标签页,类似于浏览器那种 这句话是在干嘛? Visual Studio.Net 初学控件,碰到个奇怪的问题,想不明白,望help! 求熟悉VC环境的兄弟姐妹帮帮忙拉~!!! 各位高手,帮帮我!有关Cursor的一点小问题 VS静态编译程序,安装后运行出错,求前辈指点 各位大侠postthreadmessage 屏幕定制!有趣的挑战? 如何在主程序中声明static变量,并在其它的类中使用它 跪求专家指点:如果在OPENGL中根据拟合点来绘制B样条
ps:看到一个回复倍高兴,以为终于有人给个方法了,一看原来是......汗一个!
里面的B样条和NURBS程序我都写好了
认真看看书,写程序不难
大哥,问你有关NURBS的一些情况。。
施法中那本必须从头看到NURBS曲线(我只要曲线)那章才能写出NURBS程序吗?NURBS具体算法是在哪章,哪页?我现在比较急用,所以如果完全看书的话,没那么多的时间了。
谢谢了!!!!我现在想走些捷径呵呵(我给你发了个短消息)
//德布尔算法计算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);
}
大哥,我现在要的是NURBS..B样条不是NURBS的特例吗
NURBS程序跟你给的B样条程序差不多吗?
THANKS!!
NURBS中有权因子,因此其算法跟德布尔算法计算B样条曲线不大一样吧??能够直接用那个算法吗?
我现在准备用 p(u)=M(wi*di*Ni,k(U))/M(wi*Ni,k(U))--其中M表示求和,也就是用齐次坐标表示法来计算。公式在PAGE314。程序必须先对B样条基进行计算,然后再计算点坐标。
你看行的通吗?
普通的方法还简单一点