如何在特定区域画圆?

How to draw circle at a specific area?

我写了一个简单的C程序来做一个圆圈。遵循中点画圆算法

这是我现在的代码:

#include <stdio.h>
#include <conio.h>
#include <graphics.h>

void main()
{
   int gd = DETECT, gm ;
   int r, x, y, xc, yc, P;

   initgraph(&gd, &gm ,"..//bgi");
   clrscr();

   printf("\n Enter the radius : ");
   scanf("%d", &r);
   printf("\n Enter the centre as X and Y : ");
   scanf("%d%d", &xc,&yc);

   x = 0;
   y = r;
   P = 1 - r;

   do
   {
     putpixel( x,  y, WHITE);
     putpixel( y,  x, WHITE);
     putpixel(-x, -y, WHITE);
     putpixel(-y, -x, WHITE);
     putpixel(-x,  y, WHITE);
     putpixel( y, -x, WHITE);
     putpixel( x, -y, WHITE);
     putpixel(-y,  x, WHITE);

     if(P < 0)
     {
       x = x + 1 ;
       P = P + (2 * x) + 1 ;
     }
     else
     {
       x = x + 1 ;
       y = y - 1 ;
       P = P + (2 * x) - (2 * y) + 1 ;
     }
  }while(x < y);

    getch();
    closegraph();

}

问题是输出似乎在左上角,我看不到整个输出。有什么方法可以将输出设置为显示在屏幕的特定区域或类似区域?

我当前输出的屏幕截图:

编辑:在 LPs 和 koldewb 建​​议的点之后,我重新编写了整个代码,现在,我在中心获得输出,我的意思是,输出好多了。我添加了不同的颜色以查看绘制了哪个象限...这是代码:-

#include<stdio.h>
#include<conio.h>
#include<graphics.h>

void main()
{
   int gd = DETECT , gm ;
   int r , x , y , xc , yc  , P;

   initgraph(&gd , &gm ,"..//bgi") ;

   printf("\n Enter the radius : ") ;
   scanf("%d" , &r) ;
   printf("\n Enter the centre as X and Y : ") ;
   scanf("%d%d" , &xc,&yc) ;

   x = 0 ;
   y = r ;
   P = 1-r ;

   do
  {
     putpixel(xc+x,yc+y,WHITE) ;
     putpixel(yc+y,xc+x,WHITE) ;
     putpixel(xc-x,yc-y,WHITE) ;
     putpixel(yc-y,xc-x,WHITE) ;
     putpixel(xc-x,yc+y,WHITE) ;
     putpixel(yc+y,xc-x,WHITE) ;
     putpixel(xc+x,yc-y,WHITE) ;
     putpixel(yc-y,xc+x,WHITE) ;

     if(P<0)
     {
       x = x + 1 ;
       P = P + (2*x) + 1 ;
     }
     else
     {
       x = x + 1 ;
       y = y - 1 ;
       P = P + (2*x) - (2*y) + 1 ;
     }
     } while(x<y) ;

     getch() ;
     closegraph() ;
  }

我不确定这是否对任何人有帮助,但是,好吧,我也可以 post 更新的代码。

我的更新输出的屏幕截图:

用户将圆心的 coos 插入到 xcyc 变量中,但您的代码始终以 x=0y=r.

开头

我无法测试代码,但也许您可以在每次计算新的 xy.[=18= 时添加 xcyc 偏移量]