Рисование Дуги окружности, по алгоритму Брезенхема
От: OZZY56  
Дата: 16.10.08 17:44
Оценка:
Есть алгоритм Брезенхема для рисования окружности. Надо модернизировать алгоритм чтобы рисовалась дуга окружности.
Предполагается, что центр окружности, частью которой является дуга, находится в точке (a, b), ее радиус равен R, цвет C, начальный угол BeginAngle, конечный угол EndAngle. Все числа целые, углы заданы в градусах.
Не получаеться и все. Получилось только в первой четверти. когда 0<BeginAngle<=90 и 0<EndAngle<90

Для окружности:

procedure BrezCir(a,b,R:Integer; Color:TColor);
  var
    x,y,d:Integer;
  procedure _20;
    begin
      x:=x+1;
        y:=y-1;
        d:=d+2*x-2*y+2;
    end;
begin
  x:=0;
  y:=R;
  d:=2*(1-R);
  while y>0 do
    begin
      Plot(To_X(x+a),To_Y(y+b),Color); {рисование точек в разных четвертях}
      Plot(To_X(-x+a),To_Y(y+b),Color);
      Plot(To_X(x+a),To_Y(-y+b),Color);
      Plot(To_X(-x+a),To_Y(-y+b),Color);
      if d<0 then
        begin
          if 2*d+2*y-1<=0 then
            begin
              x:=x+1;
              d:=d+2*x+1;
            end
          else _20;
        end
       else
      if d>0 then
        begin
          if 2*d-2*x-1<=0 then _20
           else
            begin
              y:=y-1;
                d:=d-2*y+1;
            end;
        end
      else _20;
    end;
end;
дуга алгоритм брезенхема
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.