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

📄 计算机图形学作业.c

📁 一个图形学和数据结构作业文档和实现代吗
💻 C
字号:
/**********************************************************************
 This is a program of drawing a line by middle point algorithm (Bresenham algorithm).
	                   CopyRights 2002 By LiLi.
**********************************************************************/
#include "graphics.h"
int HEIGHT;
main()
{ int x0,x1,y0,y1;int color;
  void midpointline(int x0,int y0,int x1,int y1,int color);
  printf("Please the x coordinate of the first point.\n");
  scanf("%d",&x0);
  printf("The y coordinate of the first point please.\n");
  scanf("%d",&y0);
  printf("The x coordinate of the second point.\n");
  scanf("%d",&x1);
  printf("The y coordinate of the second point.\n");
  scanf("%d",&y1);
  printf("The Color of the Line :\n");
  scanf("%d",&color);
  midpointline(x0,y0,x1,y1,color);
}
void midpointline(int x0,int y0,int x1,int y1,int color)
{ int i;int temp;
  int gdriver=DETECT,gmode;
  void line1(int,int,int,int,int);
  void line2(int,int,int,int,int);
  void line3(int,int,int,int,int);
  void line4(int,int,int,int,int);
  if(x0>x1)
  {temp=x0;x0=x1;x1=temp;temp=y0;y0=y1;y1=temp;}
  initgraph(&gdriver,&gmode,"");
  HEIGHT=getmaxy();
  if(y0==y1)     /*It's a horizontal line. */
       for(i=x0;i<=x1;i++)putpixel(i,HEIGHT-y0,color);
  else if(x0==x1)      /*It's a vertical line. */
       if(y0<y1)
	for(i=y0;i<=y1;i++)putpixel(x0,HEIGHT-i,color);
       else
	for(i=y1;i<=y0;i++)putpixel(x0,HEIGHT-i,color);
  else if(y1>y0&&y1-y0<=x1-x0)
       line1(x0,y0,x1,y1,color);
  else if(y1>y0&&y1-y0>x1-x0)
       line2(x0,y0,x1,y1,color);
  else if(y0-y1<x1-x0)
       line3(x0,y0,x1,y1,color);
  else
       line4(x0,y0,x1,y1,color);
  getch();
  closegraph();
}
void line1(int x0,int y0,int x1,int y1,int color)
{ int dx,dy,incrE,incrNE,d,x,y;
  dx=x1-x0;  dy=y1-y0;  d=dx-2*dy;
  incrE=-2*dy; incrNE=2*(dx-dy);
  x=x0;y=y0;
  putpixel(x,HEIGHT-y,color);
  while(x<x1)
   { if(d>0)
     d+=incrE;
     else
     {d+=incrNE;
      y++;
     }
     x++;
     putpixel(x,HEIGHT-y,color);
  }
}
void line2(int x0,int y0,int x1,int y1,int color)
{ int dx,dy,incrE,incrNE,d,x,y;
  dx=x1-x0; dy=y1-y0; d=2*dx-dy;
  incrE=2*dx; incrNE=2*(dx-dy);
  x=x0;y=y0;
  putpixel(x,HEIGHT-y,color);
  while(y<y1)
  { if(d<0)
    d+=incrE;
    else
    {d+=incrNE;
     x++;
    }
    y++;
    putpixel(x,HEIGHT-y,color);
   }
}
void line3(int x0,int y0,int x1,int y1,int color)
{  int dx,dy,incrE,incrNE,d,x,y;
   y1=2*y0-y1;
   dx=x1-x0;  dy=y1-y0;  d=dx-2*dy;
   incrE=-2*dy; incrNE=2*(dx-dy);
   x=x0;y=y0;
   putpixel(x,HEIGHT-y,color);
   while(x<x1)
   { if(d>0)
     d+=incrE;
     else
     {d+=incrNE;
     y++;
     }
     x++;
     putpixel(x,HEIGHT-2*y0+y,color);
   }
}
void line4(int x0,int y0,int x1,int y1,int color)
{ int dx,dy,incrE,incrNE,d,x,y;
  y1=2*y0-y1;
  dx=x1-x0; dy=y1-y0; d=2*dx-dy;
  incrE=2*dx; incrNE=2*(dx-dy);
  x=x0;y=y0;
  putpixel(x,HEIGHT-y,color);
  while(y<y1)
  { if(d<0)
    d+=incrE;
    else
    {d+=incrNE;
     x++;
     }
     y++;
     putpixel(x,HEIGHT-2*y0+y,color);
  }
}

⌨️ 快捷键说明

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