Science

Gravity

in
1
2
3
4
5
Description:
Simplistic planetary dynamics simulation. When I get this right I may promote it as a house project on the main Quite BASIC site,
canvas_size:
125x125
Program:
1000 REM Planetary Dynamics Simulation 1010 REM 1020 REM 1030 CLC 2000 REM Arrays holding mass, position, speed, and color 2010 ARRAY M 2020 ARRAY X 2030 ARRAY Y 2040 ARRAY U 2050 ARRAY V 2060 ARRAY C 2070 REM Gravitational constant 2080 LET G = 2 2100 REM Index 1 -- The Sun 2110 LET X[1] = 62 2120 LET Y[1] = 62 2130 LET U[1] = 0 2140 LET V[1] = 0 2150 LET M[1] = 1 2160 LET C[1] = "orange" 2200 REM Index 2 -- The Earth 2210 LET X[2] = 25 2220 LET Y[2] = 62 2230 LET U[2] = 0 2240 LET V[2] = 1.45 2250 LET M[2] = 0.01 2260 LET C[2] = "blue" 2200 REM Index 2 -- The Moon 2310 LET X[3] = 27 2320 LET Y[3] = 62 2330 LET U[3] = 0 2340 LET V[3] = 1.35 2350 LET M[3] = 0.001 2360 LET C[3] = "white" 2400 REM Number of bodies 2410 LET N = 3 3000 REM Main Dynamics loop 3010 REM 3020 REM "Unplot" all bodies 3020 FOR I = 1 TO N 3030 PLOT X[I], Y[I], "gray" 3231 REM PRINT I + ": " + X[I] +" "+ Y[I] 3040 NEXT I 3050 REM Accelerate all bodies based on pull from all other bodies 3060 FOR I = 1 TO N - 1 3070 FOR J = I+1 TO N 3080 LET D = (X[I]-X[J])*(X[I]-X[J])+(Y[I]-Y[J])*(Y[I]-Y[J]) 3090 LET Q = (X[I]-X[J]) * G / D 3100 LET U[I] = U[I] - Q * M[J] 3110 LET U[J] = U[J] + Q * M[I] 3130 LET Q = (Y[I]-Y[J]) * G / D 3140 LET V[I] = V[I] - Q * M[J] 3150 LET V[J] = V[J] + Q * M[I] 3160 NEXT J 3170 NEXT I 3180 REM Move and plot all bodies 3190 FOR I = 1 TO N 3200 LET X[I] = X[I] + U[I] 3210 LET Y[I] = Y[I] + V[I] 3220 PLOT X[I], Y[I], C[I] 3231 REM PRINT I + ": " + X[I] +" "+ Y[I] 3230 NEXT I 3240 PAUSE 20 3350 GOTO 3000
Syndicate content