Bresenham畫線演算法C++

HW140701發表於2016-11-18

Bresenham畫線演算法C++

//斜率為0<m<1.0的Bresenham畫線演算法
#include<stdlib.h>
#include<math.h>
void Bresenhamline(int x0,int y0,int xEnd,int yEnd)
{
	int dx=fabs(xEnd-x0),dy=fabs(yEnd-y0);
	int p=2*dy-dx;
	int twoDy=2*dy,twoDyMinusDx=2*(dy-dx);
	int x,y;
	if(x0>xEnd)
	{
	x=xEnd;
	y=yEnd;
	xEnd=x0;
	}
	else
	{
	x=x0;
	y=y0;
	}
	setPixel(x,y);
	while(x<xEnd)
	{
	x++;
	if(p<0)
		p+=twoDy;
	else
	{
	y++;
	p+=twoDyMinusDx;
	}
	setPixel(x,y);
	}
}


相關文章