画实心圆

a904235765 2014-12-23 08:14:18
//画实心圆
//x0,y0:坐标
//r:半径
//color:颜色
void gui_fill_circle(u16 x0,u16 y0,u16 r,u16 color)
{
u32 i;
u32 imax = ((u32)r*707)/1000+1;
u32 sqmax = (u32)r*(u32)r+(u32)r/2;
u32 x=r;
gui_draw_hline(x0-r,y0,2*r,color);
for (i=1;i<=imax;i++)
{
if ((i*i+x*x)>sqmax)// draw lines from outside
{
if (x>imax)
{
gui_draw_hline (x0-i+1,y0+x,2*(i-1),color);
gui_draw_hline (x0-i+1,y0-x,2*(i-1),color);
}
x--;
}
// draw lines from inside (center)
gui_draw_hline(x0-x,y0+i,2*x,color);
gui_draw_hline(x0-x,y0-i,2*x,color);
}
}
请问这两语句是根据什么写出来的??
u32 imax = ((u32)r*707)/1000+1;
u32 sqmax = (u32)r*(u32)r+(u32)r/2;
...全文
524 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-12-24
  • 打赏
  • 举报
回复
r*sqrt(2.0)/2.0≈r*1.414/2.0=r*0.707=r*707/1000
赵4老师 2014-12-24
  • 打赏
  • 举报
回复
复习高中数学圆锥曲线。
a904235765 2014-12-24
  • 打赏
  • 举报
回复
恩,谢谢啊,可是还想问下,它这是根据什么算法来实现的?怎么就知道要这样写的
a904235765 2014-12-23
  • 打赏
  • 举报
回复
引用 1 楼 fly_dragon_fly 的回复:
.sqrt(2)/2
恩,还是想问问这是根据什么来实现的,为什么是这样啊?
fly_dragon_fly 2014-12-23
  • 打赏
  • 举报
回复
.sqrt(2)/2

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧