Построение окружности

screen

Продемонстрировать скорость построения окружности двумя алгоритмами. Целочисленным алгоритмом и алгоритмом, основанным на уравнении окружности с использованием вещественных чисел.

В программе предусмотрено две кнопки, по нажатию на первую окно заполняется окружностями построенными по уравнению окружности с использованием вещественных чисел, на вторую окно заполняется окружностями целочисленным алгоритмом.

var
Form1: TForm1;
xarray : Array[1..1000] of Integer;
yarray : Array[1..1000] of Integer;
 
i,j,k,l,x,y,z,i1,j1,k1,cnt,minn,maxx,a1,b1,c1: Integer;
s,s1,s2,s3 : Double;
dx,dy,incr1,incr2,d,xend: integer;
str :String;
 
implementation
 
{ TForm1 }
//запуск алгоритма построения окружности по уравнению с использованием вещественных чисел.
procedure TForm1.Button1Click(Sender: TObject);
begin
    PaintBox1.Canvas.Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);
a1:=5;
b1:=5;
c1:=4;
 
while a1<PaintBox1.Width-10 do begin
while b1<PaintBox1.Height do begin
Circle(a1,b1,c1);
b1:=b1+5;
end;
b1:=5;
a1:=a1+5;
end;
end;
//запуск построения окружности  целочисленным алгоритмом
procedure TForm1.Button2Click(Sender: TObject);
begin
PaintBox1.Canvas.Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);
a1:=5;
b1:=5;
c1:=4;
 
while a1<PaintBox1.Width-10 do begin
while b1<PaintBox1.Height do begin
Circle1(a1,b1,c1);
b1:=b1+5;
end;
b1:=5;
a1:=a1+5;
end;
end;
//процедура строит восемь точек окружности имея координаты всего одной.(Благодаря этому можно рисовать только 1/8 окружности)
procedure TForm1.Circle_Pixel(x0,y0,x,y: Integer);
begin
PaintBox1.Canvas.Pixels[x0 + x, y0 + y]:=clred;
PaintBox1.Canvas.Pixels[x0 + y, y0 + x]:=clred;
PaintBox1.Canvas.Pixels[x0 - y, y0 + x]:=clred;
PaintBox1.Canvas.Pixels[x0 - x, y0 + y]:=clred;
PaintBox1.Canvas.Pixels[x0 - x, y0 - y]:=clred;
PaintBox1.Canvas.Pixels[x0 - y, y0 - x]:=clred;
PaintBox1.Canvas.Pixels[x0 + y, y0 - x]:=clred;
PaintBox1.Canvas.Pixels[x0 + x, y0 - y]:=clred;
 
end;
//алгоритм построения окружности с помощью вещественных чисел и уравнения окружности 
procedure Tform1.Circle (x0,y0,R : integer);
begin
 
for x:=0 to round(R/sqrt(2) ) do begin
 
y:= round((sqrt(sqr(R)-sqr(x))));
Circle_Pixel (x0, y0, x, y);
end;
 
end;
//алгоритм построения окружности с помощью целочисленных чисел. 
procedure Tform1.Circle1 (x0,y0,R : integer);
begin
 
d:=3-2*y;
x:=0;
y:=R;
while(x <= y) do
begin
Circle_Pixel (x0, y0, 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;

Ключевые слова: 
Построение окружности, скорость построения ,алгоритм построения окружности
ВложениеРазмер
circle.zip277.6 кб