OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4115|回复: 3

原子哥Bresenham算法画圆求详解

[复制链接]

33

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2015-2-23
在线时间
26 小时
发表于 2015-5-3 20:43:23 | 显示全部楼层 |阅读模式
5金钱
//在指定位置画一个指定大小的圆
//(x,y):中心点
//r   :半径
void LCD_Draw_Circle(u16 x0,u16 y0,u8 r)
{
int a,b;
int di;
a=0;b=r;  
di=3-(r<<1);             //判断下个点位置的标志
while(a<=b)
{
LCD_DrawPoint(x0-b,y0-a);             //3           
LCD_DrawPoint(x0+b,y0-a);             //0           
LCD_DrawPoint(x0-a,y0+b);             //1       
LCD_DrawPoint(x0-b,y0-a);             //7           
LCD_DrawPoint(x0-a,y0-b);             //2             
LCD_DrawPoint(x0+b,y0+a);             //4               
LCD_DrawPoint(x0+a,y0-b);             //5
LCD_DrawPoint(x0+a,y0+b);             //6 
LCD_DrawPoint(x0-b,y0+a);             
a++;
//使用Bresenham算法画圆     
if(di<0)di +=4*a+6;  
else
{
di+=10+4*(a-b);   
b--;

LCD_DrawPoint(x0+a,y0+b);
}
}
新手学STM
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-5 00:32:06 | 显示全部楼层
我也是抄来的,楼主自行研究下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

33

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2015-2-23
在线时间
26 小时
 楼主| 发表于 2015-5-7 21:06:06 | 显示全部楼层
好的,谢谢原子哥
新手学STM
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2015-5-7 21:47:49 | 显示全部楼层
自行百度Bresenham算法不就知道了?大概就是圆方程的离散化。
业余程序玩家。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 18:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表