C语言利用putpixel画一条三次Bezier曲线

先了解下Bezier曲线吧!
一条Bezier曲线可以拟合任何数目的控制点
C语言利用putpixel画一条三次Bezier曲线_第1张图片
C语言利用putpixel画一条三次Bezier曲线_第2张图片C语言利用putpixel画一条三次Bezier曲线_第3张图片
三次Bezier曲线:
C语言利用putpixel画一条三次Bezier曲线_第4张图片
C语言利用putpixel画一条三次Bezier曲线_第5张图片
C语言利用putpixel画一条三次Bezier曲线_第6张图片
根据x(t)和y(t)计算可画出一条三次Bezier曲线

#include
#include
#include
void bezier(int x[],int y[]){
	int a0,a1,a2,a3,b0,b1,b2,b3;
	a0=x[0];
    a1=-3*x[0]+3*x[1];
    a2=3*x[0]-6*x[1]+3*x[2];
    a3=-x[0]+3*x[1]-3*x[2]+x[3];
    
    b0=y[0];
    b1=-3*y[0]+3*y[1];
    b2=3*y[0]-6*y[1]+3*y[2];
    b3=-y[0]+3*y[1]-3*y[2]+y[3];
    
    float t; 
    for(t=0;t<1;t+=0.01)
    	putpixel(a0+a1*t+a2*t*t+a3*t*t*t,b0+b1*t+b2*t*t+b3*t*t*t,WHITE); 
}

int main(){
	initgraph(640,480);
	setbkcolor(BLACK);
    int xx[4]={100,150,180,200};
    int yy[4]={150,100,160,180};//任意四个控制点坐标 
    bezier(xx,yy);
	getch();
	closegraph();
	return 0;	
} 

你可能感兴趣的:(C语言,计算机图形学)