中点Bresenham算法绘制任意一条直线(由键盘输入直线的两端点坐标)

#include "graphics.h"
#include 
#include 
#include 
void LineWithBresenham_One(int xStart,int yStart,int xEnd,int yEnd)
{
 int dx = fabs(xEnd -xStart), dy = fabs(yEnd - yStart);
 int currentP = 2 * dy - dx;
 int twoDy = 2 * dy, twoDySubTwoDx = 2 * (dy - dx);
 int x, y;
 if(xStart == xEnd)
 {
  line(xStart,yStart,xEnd,yEnd);
  return ;
 }
 if(yStart == yEnd)
 {
  line(xStart,yStart,xEnd,yEnd);
  return;
 }
 if(xStart > xEnd)
 {
  x = xEnd;
  y = yEnd;
  xEnd = xStart;
 }
 else
 {
  x = xStart;
  y = yStart;
 }
 putpixel(x,y,255);
 while(x < xEnd)
 {
  x++;
  if(currentP < 0)
  {
   currentP += twoDy;
  }
  else
  {
   y++;
   currentP += twoDySubTwoDx;
  }
  putpixel(x,y,255);
 }
 getchar();
}
void main()
{
	int  gdriver ,gmode;
    gdriver = DETECT;
	int x1,x2,y1,y2;
	printf("请输入第一个端点坐标:\n");
	scanf("%d%d",&x1,&y1);
	printf("请输入第二个端点坐标:\n");
	scanf("%d%d",&x2,&y2);
	initgraph(&gdriver,&gmode,"");       /* 图形系统初始化 */
	setbkcolor(BLUE);
//    LineWithDDA(x1,y1,x2,y2);
	setcolor(WHITE);
//   outtextxy(200,30,"DDA直线算法");


    LineWithBresenham_One(x1,y1,x2,y2);
	outtextxy(200,30,"中点Bresenham直线算法");
    getchar();
	getchar();
    closegraph ( );                     /*关闭图形系统,返回文本方式  */
}

中点Bresenham算法绘制任意一条直线(由键盘输入直线的两端点坐标)_第1张图片

中点Bresenham算法绘制任意一条直线(由键盘输入直线的两端点坐标)_第2张图片

 

 

你可能感兴趣的:(计算机图形学,算法,蓝桥杯,c语言)