Анимация движения и ударов шара в паскаль

14 апреля 2020 - Администратор

Анимация в паскаль. Моделирование движения шара и упругих отражений от стен.

В этой статье мы разберем еще один пример графической анимации в паскаль.Мы напишем программу на Abc Pasacal в которой будет моделироваться движение шара в коробке. Шар при столкновении со стенками и границами экрана упруго отражается. 
Чтобы смоделировать движение шара в программе на паскаль, 
вводятся переменные  отвечающие за координаты центра и проекции скорости на ось x и ось y
x:=70;
y:=120;
vx:=2;
vy:=1;

Чтобы задать перемещение объекта в программе паскаль необходимо нарисовать  объект, через паузу стереть его и изменить координаты центра объекта 
SetPenColor(clBlack);
circle(x,y,r);
sleep(20);
SetPenColor(clWhite);
circle(x,y,r);
x:=x+vx;
y:=y+vy;

Чтобы смоделировать в программе  отражение от стены необходимо при пересечении границы поменять знак проекции скорости объекта. Например отражение от левой стены задается условием
if (x<r) then begin
vx:=-vx;
end;

Отражение от правой стены задается условием 
if (x>500-r) then begin
vx:=-vx;
end;

Аналогично в программе задаётся отражение от верхней границы и нижней, только меняется проекция скорости на ось y это vy
if (y>500-r) then begin
vy:=-vy;
end;
if (y<r) then begin
vy:=-vy;
end;

Полная версия программы на abc pascal графической анимации, в которой моделируется движение и упругие удары, отскоки шара.
uses GraphABC;
var i,x,y,vx,vy,r,xs1,xs2,ys1,ys2 : integer;
begin
x:=70;
y:=120;
vx:=2;
vy:=1;
r:=5;
setWindowSize(500, 500);
for i:=1 To 1000 do
begin
SetPenColor(clBlack);
circle(x,y,r);
sleep(20);
SetPenColor(clWhite);
circle(x,y,r);
x:=x+vx;
y:=y+vy;
if (x>500-r) then begin
vx:=-vx;
end;
if (x<r) then begin
vx:=-vx;
end;
if (y>500-r) then begin
vy:=-vy;
end;
if (y<r) then begin
vy:=-vy;
end;
end;
SetPenColor(clBlack);
circle(x,y,r);
end.

анимация движения шара в паскаль

Полезно почитать по теме анимация и графика в abc pascal:
Анимация в Паскаль
Графика в Паскаль

Поделиться

 
 
Комментарии (0)

Нет комментариев. Ваш будет первым!