Рисование линии по алгоритму Брезенхама
  Функция рисования линии была мной значительно переработана и прооптимизированна, но все же есть еще простор для 
творчества.
	

void LineBrez(int x1,int y1,int x2,int y2){
	int xer=0,yer=0;
	int delx=abs(x2-x1);
	int dely=abs(y2-y1);
	int max=delx>dely?delx:dely;	// в max записывается наибольшее из двух delx, dely
	char vx=x2>=x1?1:-1;		// Прирост по x
	char vy=y2>=y1?1:-1;		// Прирост по y

	if(delx>dely)			// Если delx>dely, то x будет изменятся каждую итерацию
		for(int i=0;i<max;i++){
			p_Buffer[y1*scr_Width+x1]=Current_Color;
		
			x1+=vx;
			yer+=dely;

			if(yer>=max){
				yer-=max;
				y1+=vy;
			}
		}
	else 
	if(dely>delx)			// Если dely>delx, то y будет изменятся каждую итерацию
		for(int i=0;i<max;i++){
			p_Buffer[y1*scr_Width+x1]=Current_Color;
		
			y1+=vy;
			xer+=delx;

			if(xer>=max){
				xer-=max;
				x1+=vx;
			}
		}
	else
	if(delx==dely)			// Если delx=dely то изменяются обе координаты
		for(int i=0;i<max;i++){
			p_Buffer[y1*scr_Width+x1]=Current_Color;
		
			x1+=vx;
			y1+=vy;
		}
}
scr_Width это ширина экрана, Current_Color текущий цвет, 1 или несколько байт зависит от реализации. В данном алгоритме существуют 3 цикла, которые специализированы под определенный случай, что теоритически увеличивает работу функции, на практике мной это не проверялось.
Статью написал faceH0r 13.07.2005
Используются технологии uCoz