Показать сообщение отдельно
  #1  
Старый 01.02.2012, 17:24
vetatto vetatto вне форума
Прохожий
 
Регистрация: 01.02.2012
Сообщения: 2
Репутация: 10
По умолчанию Алгоритм Брезенхема

Привет всем! У меня возникла проблема с алгоритмом Брезенхема для окружности.

Нужно нарисовать окружность на изображении.
Если я рисую ее на цветном изображении, то выходит вот


А если на черно-белом то вот


Сам алгоритм
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(
<= 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 не выходит...
Ответить с цитированием