研究生
最后登录1970-1-1
在线时间 小时
注册时间2016-7-12
|
楼主 |
发表于 2016-8-22 10:14:51
|
显示全部楼层
可能只是纯粹的为比较大小用。为了不删帖,附一段中点画椭圆代码给大伙参考参考。
void LCD_DrawEllipse(int Xpos, int Ypos, int a, int b)
{
int A=a*a,B=b*b;
int d,x=0,y=b;
d = B-A*b+A/4; //后面只涉及整数运算,小数可舍去
while(B * (x + 1) < A * (y - 0.5))
{
putpixel(x+Xpos,y+Ypos);
putpixel(-x+Xpos,y+Ypos);
putpixel(x+Xpos,-y+Ypos);
putpixel(-x+Xpos,-y+Ypos);
if(d<0)
{
d += 2*B*x+3*B;
}
else
{
d += 2*(B*x-A*y)+3*B+2*A;
y--;
}
x++;
putpixel(x+Xpos,y+Ypos);
putpixel(-x+Xpos,y+Ypos);
putpixel(x+Xpos,-y+Ypos);
putpixel(-x+Xpos,-y+Ypos);
}
while(y > 0)
{
if (d < 0)
{
d += B * (2 * x + 2) + A * (-2 * y + 3);
x++;
}
else
{
d += A * (-2 * y + 3);
}
y--;
putpixel(x+Xpos,y+Ypos);
putpixel(-x+Xpos,y+Ypos);
putpixel(x+Xpos,-y+Ypos);
putpixel(-x+Xpos,-y+Ypos);
}
}
例程里程序太简单了以至于看不懂。。。 |
|