用已知点画连续光滑曲线调用那个函数?

[复制链接]
查看11 | 回复0 | 2008-5-23 18:08:33 | 显示全部楼层 |阅读模式
如果已知3点可以用 插值法 画平滑的曲线下面是tc3.0环境下的程序 你去参考下#include #include #include void parspl();void marking();main(){ int gdriver=VGA,gmode=VGAHI; int p[4][2]={{0,0},{10,10},{140,25},{170,45}}; int n=3; initgraph(&gdriver,&gmode,"d:\\tc"); cleardevice(); setbkcolor(9); setcolor(4); marking(p,n); getch(); setcolor(2); parspl(p,n,10); getch(); closegraph();}void marking(a,n)int a[4][2],n;{int i; setfillstyle(1,RED); for(i=1;i<=n;i++){circle(a[0],a[1],2); floodfill(a[0],a[1],RED); }}void parspl(p,n,k)int p[4][2],n,k;{int x,y,i,j,m; float t1,t2,t3,t,a,b,c,d; m=n; p[0][0]=p[1][0];p[0][1]=p[1][1]; p[n+1][0]=p[n][0];p[n+1][1]=p[n][1]; t=0.5/k; moveto(p[1][0],p[1][1]); for(i=0;i<m-1;i++){for(j=1;j<k;j++)
{ t1=j*t;t2=t1*t1;t3=t2*t1;
a=-4.0*t3+4.0*t2-t1;
b=12.0*t3-10.0*t2+1.0;
c=-12.0*t3+8.0*t2+t1;
d=4.0*t3-2.0*t2;
x=a*p[0]+b*p[i+1][0]+c*p[i+2][0]+d*p[i+3][0];
y=a*p[1]+b*p[i+1][1]+c*p[i+2][1]+d*p[i+3][1];
lineto(x,y);
}lineto(p[i+2][0],p[i+2][1]);}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行