用C语言怎么画圆呢?

2020-01-23 14:36发布

请问谁懂C语言画圆的原理?无穷多边形吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
27条回答
Jason022
2020-01-23 15:59
  1. /********************************************/
  2. /* 画圆数学方程(X-Ox)^2+(Y-Oy)^2=Rx^2 */
  3. /********************************************/
  4. void GUI_circle( unsigned char Ox,unsigned char Oy,unsigned char Rx,unsigned char s )
  5. {
  6.     unsigned int xx,rr;
  7.     unsigned int xt,yt;
  8.     unsigned int rs,row,col;
  9.     yt = Rx;
  10.     rr = ( unsigned int )Rx*Rx+1; // 补偿1 修正方形
  11.     rs = ( yt+( yt>>1 ) )>>1; // (*0.75)分开1/8圆弧来画
  12.     for ( xt=0; xt<=rs; xt++ )
  13.     {
  14.         xx = xt*xt;
  15.         while ( ( yt*yt )>( rr-xx ) )
  16.         {
  17.             yt--;
  18.         }
  19.         row = Ox+xt; // 第一象限
  20.         col = Oy-yt;
  21.         LCD_Point( row,col,s );
  22.         row = Ox-xt; // 第二象限
  23.         LCD_Point( row,col,s );
  24.         col = Oy+yt; // 第三象限
  25.         LCD_Point( row,col,s );
  26.         row = Ox+xt; // 第四象限
  27.         LCD_Point( row,col,s );
  28.         //***************45度镜象画另一半***************
  29.         row = Ox+yt; // 第一象限
  30.         col = Oy-xt;
  31.         LCD_Point( row,col,s );
  32.         row = Ox-yt; // 第二象限
  33.         LCD_Point( row,col,s );
  34.         col = Oy+xt; // 第三象限
  35.         LCD_Point( row,col,s );
  36.         row = Ox+yt; // 第四象限
  37.         LCD_Point( row,col,s );
  38.     }
  39. }
复制代码

一周热门 更多>