Zdravím!
Peru se se zápočtovým programem, který má zadání: "Simulace oběhu 1 planety a 1 jejího měsíce kolem Slunce." (začala jsem zatím pouze planetou). Samotné použití Pascalu v tomto případě mi přijde nanejvýš nešťastné, pravděpodobně už ho také nikdy jindy nepoužiji, ale tohle je podmínka...
Podařilo se mi snad přijít na to, jak by měl program fungovat (krokovat), nechala jsem si vypisovat polohy a měly by zhruba odpovídat. Ale jakmile použiju grafiku, tak je problém s velkými čísly - jistě při vykreslení jsem používala měřítko, ale narážím stále na chybu 217: "Unhandled Exception Occurred" během.
Tedy alespoň myslím, že je chyba ve velkých (a malých) číslech.
Nemá někdo zkušenosti s takovouto grafikou?
program simulace;
uses Graph, Crt, Math;
var Gd, Gm, m, n, Radius: Integer;
kappa, m_Sl, vx0, vy0, ax, ay, perihel, x0, y0, x, y, vx, vy, F: Extended;
dt, k, l, kk, ll: LongInt;
begin
Gd:=Detect;
m:=0; {posunutí středu soustavy souřadné "doprava"}
n:=0; {posunutí středu soustavy souřadné "dolů"}
perihel:=0.9141*(1.49598E+11);
dt:= 60;
m_Sl:= 2E+19; {hmotnost Slunce}
kappa:= 6.67; {gravitacni konstanta}
vx0:= 0;
vy0:= 44000;
x0:= -perihel;
y0:= 0;
InitGraph(Gd, Gm, '');
if GraphResult <> grOK then
Halt(1);
Setcolor (14); {vykreslení SLUNCE}
For Radius:=0 to 20 do
begin
Circle (0,0,Radius);
end;
k:=round(x0); {zaokrouhlení na celé pixely}
l:=round(y0);
Circle (k, l, 3);
repeat
begin
F:=(-kappa*m_Sl)/power(x0*x0+y0*y0, 1.5);
ax:=F*x0;
ay:=F*y0;
vx:=vx0+ax*dt;
vy:=vy0+ay*dt;
x:=x0+vx*dt;
y:=y0+vy*dt;
kk:=round(x);
ll:=round(y);
Circle (kk, ll, 3);
x0:=x;
y0:=y;
vx0:=vx;
vy0:=vy;
Delay (1000);
end;
Until Keypressed;
CloseGraph;
end.
Nejsem programátor, tohle je pro mě jen nutné zlo. Ráda si sestavím nějaký program, když se mi chce a mám nápad. Ale u tohohle mě tlačí čas a vyučující :/
Předem díky za rady!