天天看點

C語言運用Casteljau算法繪制一條三次Bezier曲線

Casteljau算法:

C語言運用Casteljau算法繪制一條三次Bezier曲線

三次Bezier曲線:

C語言運用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;	
} 
           

繼續閱讀