zoukankan      html  css  js  c++  java
  • 中点画线法画圆

        中点画线法已经在画直线的时候详细讲过了,画圆时我们也可以用这种方法。画一个圆心为坐标原点的1/4圆,然后对其进行简单几何变换,平移对称,就可以得到任意圆。

       类似的用中点画线法,从(0,r)点开始,每次要么向右走,要么向右下走,直到x==y,即到达四分之一圆处:

     (1)当d<0时,中点在圆内,则取正右方的点,(x+1,y+0.5),此时d=d+2*x+3;

      (2) 当d>=0时,中点在圆外,则取右下方的点,(x+1,y-1),此时d=d+2*(x-y)+5;

      (3) d0=1-r,即点(0,r)代入圆中的值。

    根据上述条件可以得出中点画圆代码(编程环境:codeblacks+EGE库):

     1 #include <iostream>
     2 #include <graphics.h>
     3 using namespace std;
     4 //进行对称点打亮
     5 void wholeColor(int xc,int yc,int x,int y,int color)
     6 {
     7        putpixel(xc+x,yc+y,color);putpixel(xc+y,yc+x,color);
     8        putpixel(xc-x,yc+y,color);putpixel(xc-y,yc+x,color);
     9        putpixel(xc+x,yc-y,color);putpixel(xc+y,yc-x,color);
    10        putpixel(xc-x,yc-y,color);putpixel(xc-y,yc-x,color);
    11 }
    12 //画圆
    13 void circle(int xc,int yc,int r,int color)
    14 {
    15     int x=0,y=r,d=1-r;
    16     wholeColor(xc,yc,x,y,color);
    17     while(x<=y)
    18     {
    19         if(d<0)        //走正右方
    20         {
    21             d+=2*x+3;
    22             x++;
    23         }else{        //走右下方
    24 
    25         d+=2*(x-y)+5;x++;y--;
    26         }
    27        wholeColor(xc,yc,x,y,color);
    28     }
    29 }
    30 
    31 int main()
    32 {
    33     initgraph(640,480);      //图形库初始化
    34     circle(200,300,56,RED);  //中点坐标和半径,颜色
    35     getch();                 //等待用户操作
    36     closegraph();            //关闭图形
    37     return 0;
    38 }
  • 相关阅读:
    select 的readonly效果
    HTML5与CSS3设计模式
    关于htons和htonl
    Http Range
    如何隐藏aspx文件格式,变成html
    UITableView的cell 自定义 高度,样式
    gson 数据里面设置特殊字符不转换为十六进制
    HDU2164:Rock, Paper, or Scissors?
    黑马程序员java基础学习网络编程2
    HDU2137:circumgyrate the string
  • 原文地址:https://www.cnblogs.com/llsq/p/7529173.html
Copyright © 2011-2022 走看看