⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ellipse.c

📁 数字信号处理实验
💻 C
字号:
/* WIN-TC BGI 图形编程模板 */

#include <Conio.h>
#include <graphics.h>
#define closegr closegraph

void initgr(void) /* BGI初始化 */
{
  int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
  registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
  initgraph(&gd, &gm, "");
}

void setpixel(int x,int y,int color)
{
int ry=getmaxy()-y;
putpixel(x,ry,color);
}
void midpointellipse(int xc,int yc,int a,int b,int color)
{
 long aa=(long)a*a,bb=(long)b*b;
 long twoaa=2*aa,twobb=2*bb;
 long x=0,y=b;
 long d;
 long dx=0;
 long dy=twoaa*y;
 d=bb+aa*(-b)+aa/4;
 setpixel(xc+x,yc+y,color);
 setpixel(xc+x,yc-y,color);
 setpixel(xc-x,yc+y,color);
 setpixel(xc-x,yc-y,color);
  while(dx<dy)
   {
   x++;
   dx+=twobb;
   if(d<0)  d+=bb+dx;
   else
   {dy-=twoaa;
   d+=bb+dx-dy;
   y--;
   }
   setpixel(xc+x,yc+y,color);
   setpixel(xc+x,yc-y,color);
   setpixel(xc-x,yc+y,color);
   setpixel(xc-x,yc-y,color);
   }
 d=bb*(x*x+x)+bb/4+aa*(y-1)*(y-1)-aa*bb;
 while(y>0)
   {y--;
    dy-=twoaa;
    if(d>0) d+=aa-dy;
    else
    {x++;
    dx+=twobb;
    d+=aa-dy+dx;
    }
    setpixel(xc+x,yc+y,color);
    setpixel(xc+x,yc-y,color);
    setpixel(xc-x,yc+y,color);
    setpixel(xc-x,yc-y,color);
    }
}
int main(void)
{ int xc,yc,a=0,b=1,color,k=0;
  printf("xc=");scanf("%d",&xc);
  printf("\nyc=");scanf("%d",&yc);
    while(a<b)
  {
  if(k==1) printf("\nInput error!");
  k=1;
  printf("\na=");scanf("%d",&a);
  printf("\nb=");scanf("%d",&b);
  }
  k=0;
  while(color<0||color>15)
  {
  if(k==1) printf("\nInput error!");
  k=1;
  printf("\ncolor=");scanf("%d",&color);
  }
  initgr(); /* BGI初始化 */
  midpointellipse(xc,yc,a,b,color);
  getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
  closegr(); /* 恢复TEXT屏幕模式 */
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -