图形学作业——画圆

今天早晨好好看了看笔记,基本理解了算法的意思,于是就动手写了一下,再稍作修改,就成功了,下面是代码的主要函数,拿出来给计算机图形学初学者共享:

  1. void drawCircle(int xc, int yc, int r) <br/>//By Alfred Phlower <br/>//2006.09.17 <br/>//xc,yc为圆心坐标,r为半径 <br/>{ <br/>int x,y,k; <br/>//x,y为当前点坐标,k为计数器 <br/>float p; <br/>//p为决策参数

x=0;
y=r;

p=5.0/4.0-(float)r;

for(k=0;x<=y;k++)
{
drawPixel(x,y,xc,yc);

if(p<0)
{
x++;
p+=(2*x+1);
}
else
{
x++;
y–;
p+=2*x-2*y+1;
}
}
}

drawPixel()是一个写点函数,计算的是1/8圆,写点函数将算出的坐标画到八个1/2象限上。

我是在TC2.0下实现的,不过drawCircle()函数中没有调用任何库函数,所以可以用在其他地方,只要drawPixel()中调用的库函数是使用的编译环境支持的就行了。

Tags: , ,

发表您的高见:

    主题制作者:Directory JournalElegant Directory