Изобразить приближающийся с постоянной скоростью шар в соответствии с законом изменения размера — Pascal(Паскаль)

r2= (r1*S)/(S-V*t)

где: r2 - радиус шара после изменения размера
r1 - радиус шара до изменения размера
S - начальное расстояние от наблюдателя до шара
V - скорость шара
t - время полета
эту формулу загоняете в цикл, где t изменяется, т.е. получится процедура

procedure ball(var rr,t_1,v_1,s_1,xx,yy: integer);
begin
r:=(r*S)/(S-V*t);
circle(x,y,r); {x,y - центр экрана}
floodfill(x,y + r + 1, white);
end;
uses crt,graph;
procedure ball(r,t,v,s,x,y:integer;var r2:integer);
begin
repeat
r2:=round((r*s)/(s-v*t));
setcolor(15);
circle(x,y,r2);
setfillstyle(1,15);
floodfill(x,y,15);
delay(200);
setcolor(0);
circle(x,y,r2);
setfillstyle(1,0);
floodfill(x,y,0);
r:=r2;
t:=t+2;
until r2>=y div 2;
setcolor(15);
circle(x,y,r);
setfillstyle(1,15);
floodfill(x,y,15);
end;
var x,y,r,r2,s,v,t:integer;
begin
r:=1;
s:=100;
v:=2;
t:=10;
x:=0;
initgraph(x,y,'');
x:=getmaxX div 2;
y:=getmaxY div 2;
circle(x,y,r);
setfillstyle(1,15);
floodfill(x,y,15);
ball(r,t,v,s,x,y,r2);
readln
end.

Следующий вариант

uses crt,graph;
var x,y,r:integer;
    v,k:char;
procedure Krug(x,y:integer);
var r:integer;
begin
r:=0;
repeat
repeat
r:=r+2;
setcolor(12);
circle(x,y,r);
setfillstyle(1,12);
floodfill(x,y,12);
delay(50);
circle(x,y,r);
setfillstyle(1,0);
floodfill(x,y,0);
until (r>y+5)or keypressed;
repeat
r:=r-2;
setcolor(12);
circle(x,y,r);
setfillstyle(1,12);
floodfill(x,y,12);
delay(50);
circle(x,y,r);
setfillstyle(1,0);
floodfill(x,y,0);
until (r<5)or keypressed;
until keypressed;
end;
begin
x:=0;
initgraph(x,y,'');
outtextXY(50,20,'Vyhod - Press any key');
x:=getmaxX div 2;
y:=getmaxY div 2;
Krug(x,y);
end.

Leave a Comment

78 + = 80