论坛大神
  
- 积分
- 1865
- 金钱
- 1865
- 注册时间
- 2011-3-29
- 在线时间
- 140 小时
|
发表于 2013-7-4 21:53:02
|
显示全部楼层
我自己推算出来的迭代公式,不知为什么跟网上给的不一样。不过都能画圆哦。
dx = r;
dy = 0;
er = 3-4*r; // er(y++)=4*(1+2y)-4r-1=3-4r
while(dy <= dx)
{
lcd_point_draw(x0+dx,y0+dy,color); // [0~pi/4]
lcd_point_draw(x0+dy,y0+dx,color); // [pi/4~pi/2]
lcd_point_draw(x0-dy,y0+dx,color); // [pi/2~3pi/4]
lcd_point_draw(x0-dx,y0+dy,color); // [3pi/4~pi]
lcd_point_draw(x0-dx,y0-dy,color); // [pi~5pi/4]
lcd_point_draw(x0-dy,y0-dx,color); // [5pi/4~3pi/2]
lcd_point_draw(x0+dy,y0-dx,color); // [3pi/2~7pi/4]
lcd_point_draw(x0+dx,y0-dy,color); // [7pi/4~2pi]
dy++;
if(er>=0)
{
dx--;
er += 8*(1+dy-dx); // er(x--,y++)=er(x,y)+(1+dy-dx)*8
}
else
{
er += (4+8*dy); // er(x,y++)=er(x,y)+(1+2y)*4
}
} |
|