Автор: GoodWind 26.09.2004 14:52
Господа, кто нибудь может доходчиво обьяснить сабж ?
Автор: Altair 27.09.2004 10:59
Алгоритм Брезенхейма служит для построения прямых. Хотя я видел как с помощью него окружность строят
Автор: GoodWind 27.09.2004 11:14
Oleg_Z, спасибо, я знаю для чего, я хочу знать КАК
Автор: Ozzя 27.09.2004 11:21
http://algolist.manual.ru/graphics/painting/line.php
Автор: P@sh@ 27.09.2004 13:54
Есть у меня какой-то алгоритм Брезенхема для эллипса... сам не смотрел даже, и не помню, где достал (может здесь?)... см. вложение.
а для рисования линий много раз им пользовался (или похожим), нашел тут одну из самых первых собственных реализаций:
Код
procedure line(x1,y1,x2,y2:integer; c:byte);
var dx,dy,dn,x,y:integer;
function sgn(n:integer):shortint;
begin
if n<0 then sgn:=-1
else if n>0 then sgn:=1
else sgn:=0;
end;
function inr(a,b,c:integer):boolean;
begin
inr:=(a>=b)and(a<=c);
end;
begin
dx:=x2-x1;
dy:=y2-y1;
x:=x1; y:=y1;
if abs(dx)>=abs(dy) then begin
dn:=abs(dx) div 2;
while (x<>x2) do begin
pset(x,y,c);
x:=x+sgn(dx);
dn:=dn-abs(dy);
if dn<=0 then begin
dn:=dn+abs(dx);
y:=y+sgn(dy);
end;
end;
end else begin
dn:=abs(dy) div 2;
while y<>y2 do begin
pset(x,y,c);
y:=y+sgn(dy);
dn:=dn-abs(dx);
if dn<=0 then begin
dn:=dn+abs(dy);
x:=x+sgn(dx);
end;
end;
end;
pset(x,y,c);
end;
Прикрепленные файлы
Bresenham_Ellipse.txt ( 8.02 килобайт )
Кол-во скачиваний: 516