Есть алгоритм Брезенхема для рисования окружности. Надо модернизировать алгоритм чтобы рисовалась дуга окружности.
Предполагается, что центр окружности, частью которой является дуга, находится в точке (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;