Casteljau算法:
三次Bezier曲線:
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
void bezier(double px[],double py[],double t,int len){
if(len==1){
putpixel(px[0],py[0],WHITE);
return;
}
int i;
for(i=0;i<len-1;i++){
px[i]=(1-t)*px[i]+t*px[i+1];
py[i]=(1-t)*py[i]+t*py[i+1];
}
bezier(px,py,t,--len);
}
int main(){
initgraph(640,480);
setbkcolor(BLACK);
double t;
for(t=0;t<1;t+=0.001){
double xx[4]={100,150,180,200};
double yy[4]={150,100,160,180};//四個控制點坐标
bezier(xx,yy,t,4);
}
getch();
closegraph();
return 0;
}