Лучший ответ
-
1 0
DuGi3aBPuK 6 (12808)3512 14 лет
procedure TForm1.Button1Click(Sender: TObject);
var x,y,p,R,xs,ys:integer;
begin
R:=StrToInt(Edit1.Text);
xs:=StrToInt(Edit2.Text);
ys:=StrToInt(Edit3.Text);
x:=0;
y:=R;
p:=1-R;
Form1.Canvas.Pixels[x+xs,y+ys]:=CLGREEN;
Form1.Canvas.Pixels[x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,y+ys]:=CLGREEN;
while x<=y do
begin
if p<0 then
begin
x:=x+1;
y:=y;
Form1.Canvas.Pixels[x+xs,y+ys]:=CLGREEN;
Form1.Canvas.Pixels[x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,y+ys]:=CLGREEN;
p:=p+1+2*x;
end
else
begin
x:=x+1;
y:=y-1;
p:=p+1+2*x-2*y;
Form1.Canvas.Pixels[x+xs,y+ys]:=CLGREEN;
Form1.Canvas.Pixels[x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,y+ys]:=CLGREEN;
end;
end;
begin
x:=R;
y:=0;
p:=1-R;
Form1.Canvas.Pixels[x+xs,y+ys]:=CLGREEN;
Form1.Canvas.Pixels[x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,y+ys]:=CLGREEN;
while x>y do
begin
if p<0 then
begin
y:=y+1;
x:=x;
p:=p+1+2*y;
Form1.Canvas.Pixels[x+xs,y+ys]:=CLGREEN;
Form1.Canvas.Pixels[x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,y+ys]:=CLGREEN;
end
else
begin
y:=y+1;
x:=x-1;
p:=p+1+2*y-2*x;
Form1.Canvas.Pixels[x+xs,y+ys]:=CLGREEN;
Form1.Canvas.Pixels[x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,-y+ys]:=CLGREEN;
Form1.Canvas.Pixels[-x+xs,y+ys]:=CLGREEN;
end;
end;
end;
end;
end.
Ответы
-
-
1 0
avenzio_ (34) 5 (4872)1918 14 лет
ну чисто из логических соображений, меняются знаки Х и У.
перебрав все комбинации ++, --, +-, -+ у тебя получится, что ты побывал во всех 4 квадрантах -
0 0
AlexDpils 5 (3047)717 14 лет
там есть разные методы, итеральный, брезенхельма и т.д., если надо пиши..