|
C:\Users\N5110\Desktop才学ARM,在改裸跑源码,逛论坛的时候,看了个介绍画圆的帖,里面说的用Bresenham 画圆算法,我看了觉得比较复杂,细想之下觉得采用三角函数画图不是更简单吗,我没见过Bresenham 画圆算法画出的圆是什么样的,估计比较精细,但三角函数画出来的也还能看得过去,现在献献丑。欢迎批评指正,共同学习!
/**************************************************************
函数功能:在LCD屏幕上指定坐标点画一个指定大小的圆
参 数:x 圆心横坐标
y 圆心纵坐标
R 圆半径
color 画线颜色
**************************************************************/
void Paint_Circle(int x,int y,int R,U32 color)
{
float theta;
float pi=0.01745327778; //3.1415926/180,把角度转化成弧度
int i,xx,yy;
for(i=0;i<721;i++) //把要画的圆分成720份,份数越多,圆越好看
{
theta=i*pi/2; //获取每个点相对于圆心的角坐标
xx=x+R*cos(theta);
yy=y+R*sin(theta);
LCD_BUFFER[yy][xx] = color ;
//Uart_Printf( "第 %03x 个点 X: %06x Y: %06x\n",i ,xx,yy);
}
}
|
|