procedure brezenhem(x1,y1,x2,y2:integer);
var dx,dy,i,y:integer; e0:double;
begin
dx:=x2-x1;
dy:=y2-y1;
e0:=2*dy-dx;
y:=y1;
//1 октант
if (dx>dy) and (y2>y1) and (x2>x1) then
for i:=x1 to x2 do begin
form1.paintbox1.canvas.Pixels[i,y]:=clblack;
e0:=e0+2*dy;//приращение ошибки при единичном шаге по горизонтальной оси
if e0>=0 then begin
inc(y);
e0:=e0-2*dx;//коррекция ошибки при шаге по вертикальной оси
end;
end;
//8 октант
if (dx>abs(dy)) and (y2<y1) and (x2>x1) then
for i:=x1 to x2 do begin
form1.paintbox1.canvas.Pixels[i,y]:=clblack;
e0:=e0+2*dy;
if e0>=0 then begin
dec(y);
e0:=e0-2*dx;
end;
end;
end;