📄 计算机图形学作业.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 + -