用C语言怎么画圆呢?

2020-01-23 14:36发布

请问谁懂C语言画圆的原理?无穷多边形吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
tdjsppwct
1楼-- · 2020-01-25 08:04
cqv 发表于 2012-3-30 19:18
当年不知道从那抄的。。

你这个程序的原理是什么?看不明白啊!while(a<=b)这个语句一开始不就是真值吗?为什么要这样比较?还有后面的:
                     /***使用Bresenham算法画圆**/     
                if(di<0)di +=4*a+6;          
                else
                {
                        di+=10+4*(a-b);   
                        b--;
                }
这样做的原理是为什么?
mlt911213
2楼-- · 2020-01-25 13:12
http://www.ourdev.cn/forum.php?m ... st%3D1%26digest%3D1
cqv
3楼-- · 2020-01-25 14:05
tdjsppwct 发表于 2012-4-18 17:21
你这个程序的原理是什么?看不明白啊!while(a

使用Bresenham算法画圆
我这不是标注了吗。。。
tdjsppwct
4楼-- · 2020-01-25 18:10
本帖最后由 tdjsppwct 于 2012-4-19 22:22 编辑
cqv 发表于 2012-4-19 20:29
使用Bresenham算法画圆
我这不是标注了吗。。。


di = 3 - 2 * r;    //判断下个点位置的标志
为什么要对di这样赋值?这个判断下一个点的原理是怎么判断的?没有懂

还有:if(di<0)     di +=4*a+6;         
         else          di+=10+4*(a-b);   
这个判断里面为什么di的值是这样计算的,实在不懂!查了下该算法,可是还是没有搞懂!望指点迷津,谢谢!
cqv
5楼-- · 2020-01-25 20:40
 精彩回答 2  元偷偷看……
raxb
6楼-- · 2020-01-26 00:14
void disp_circle(uchar a,uchar b,uchar r,uint o)
{                            //a,b:圆心坐标  r:半径 o:圆心角
    uchar x,y;               //x,y:圆上坐标
    x=(uchar)(a-r*cos((double)(o*rad)));
    y=(uchar)(b-r*sin((double)(o*rad)));
    disp_dot(x,y);
}

void disp_dot(uchar hang,uchar lie)//hang:行(0~63)
{                                  //lie: 列(0~127)
    uchar col,page;                //col: 选择dot表中字形
    page=hang/8;                   //page:判断属于哪一页
    col=hang%8;
    set_page_address(7-page);
    set_col_address(lie);
    w_data(dot[col]);
}

一周热门 更多>