【求救】谁知道B样条曲线的画法!!!!! 刚学图形学,看了看贝塞尔曲线的画法,然后实现了,但B样条的公式我怎么也看不懂,网上的程序也都没什么注释,谁能讲讲主要的算法啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我看到的程序好多是这样的 for(i=0;i<=n-3;i++) { x=((p[i].x+p[i+2].x)/2+2*p[i+1].x)/3; y=((p[i].y+p[i+2].y)/2+2*p[i+1].y)/3; /*d=sqrt(ax*ax+ay*ay)/4; m=sqrt(d/0.01);*/ dt=1.0/m; moveto(x,y); for(j=0;j<=m;j++) { tj=j*dt; f0=(1.0/6)*(-tj*tj*tj+3*tj*tj-3*tj+1); f1=(1.0/6)*(3*tj*tj*tj+6*tj*tj+4); f2=(1.0/6)*(-3*tj*tj*tj+3*tj*tj+3*tj+1); f3=(1.0/6)*(tj*tj*tj); x=p[i].x*f0+p[i+1].x*f1+p[i+2].x*f2+p[i+3].x*f3; y=p[i].y*f0+p[i+1].y*f1+p[i+2].y*f2+p[i+3].y*f3; lineto(x,y); } x=((p[i+1].x+p[i+3].x)/2+2*p[i+2].x)/3; y=((p[i+1].y+p[i+3].y)/2+2*p[i+2].y)/3; lineto(x,y); } } 谁能给我大概解释一下啊。和B样条的公式差挺多啊 直接看代码肯定不好懂了,建议你看看《计算机图形学》,Donald Hearn编著,里面专门有贝塞尔和B样条的章节,讲得很清楚,好像也有c代码的..... 简单说就是 x、y 是分段的参数方程;x=f(t) y=g(t), t 属于区间1;x=m(t) y=n(t), t 属于区间2; VC 反汇编问题 求猛男进 求救 各位~ VC问题 关于 ODT文档格式的问题!在线等。。。 visio左边如何根据宽度自动调整每一排的按钮个数,vc中该如何实现? 如何将开发好的Atl通过IE自动下载到客户端并自动注册 ISDN,ADSL以及老式的56k Modem拨号 关于分数问题 父进程的内核对象句柄表中有没有子进程的内核句柄? VC中有没有支持这样的控件! 这两种写法有什么区别? 对话框问题
for(i=0;i<=n-3;i++)
{
x=((p[i].x+p[i+2].x)/2+2*p[i+1].x)/3;
y=((p[i].y+p[i+2].y)/2+2*p[i+1].y)/3;
/*d=sqrt(ax*ax+ay*ay)/4;
m=sqrt(d/0.01);*/
dt=1.0/m;
moveto(x,y);
for(j=0;j<=m;j++)
{
tj=j*dt;
f0=(1.0/6)*(-tj*tj*tj+3*tj*tj-3*tj+1);
f1=(1.0/6)*(3*tj*tj*tj+6*tj*tj+4);
f2=(1.0/6)*(-3*tj*tj*tj+3*tj*tj+3*tj+1);
f3=(1.0/6)*(tj*tj*tj);
x=p[i].x*f0+p[i+1].x*f1+p[i+2].x*f2+p[i+3].x*f3;
y=p[i].y*f0+p[i+1].y*f1+p[i+2].y*f2+p[i+3].y*f3;
lineto(x,y);
}
x=((p[i+1].x+p[i+3].x)/2+2*p[i+2].x)/3;
y=((p[i+1].y+p[i+3].y)/2+2*p[i+2].y)/3;
lineto(x,y);
}
} 谁能给我大概解释一下啊。和B样条的公式差挺多啊
x=m(t) y=n(t), t 属于区间2;