Привет всем! У меня возникла проблема с алгоритмом Брезенхема для окружности.
Нужно нарисовать окружность на изображении.
Если я рисую ее на цветном изображении, то выходит вот
А если на черно-белом то вот
Сам алгоритм
PHP код:
procedure bres_circle(xc,yc,r:integer);
var x,y,d:integer;
procedure sim(x,y:integer);
begin
Form1.Image1.Canvas.Pixels[x+xc,y+yc]:=clred;
Form1.Image1.Canvas.Pixels[x+xc,-y+yc]:=clred;
Form1.Image1.Canvas.Pixels[-x+xc,-y+yc]:=clred;
Form1.Image1.Canvas.Pixels[-x+xc,y+yc]:=clred;
Form1.Image1.Canvas.Pixels[y+xc,x+yc]:=clred;
Form1.Image1.Canvas.Pixels[y+xc,-x+yc]:=clred;
Form1.Image1.Canvas.Pixels[-y+xc,-x+yc]:=clred;
Form1.Image1.Canvas.Pixels[-y+xc,x+yc]:=clred;
end;
begin
d:=3-2*y;
x:=0;
y:=r;
while(x <= y) do
begin
sim(x,y);
if d<0 then d:=d+4*x+6
else begin
d:=d+4*(x-y)+10;
dec(y)
end;
inc(x)
end;
end;
Подскажите почему так? Мне нужно работать именно с ЧБ изображением, причем при рисовании окружности нужно знать ее точки из-за этого Просто функцией Ellipse не выходит...