mirror of
https://github.com/mbirth/gwbasic.git
synced 2024-11-09 23:06:45 +00:00
49 lines
1.2 KiB
QBasic
49 lines
1.2 KiB
QBasic
10 'Programm: SONNE.BAS
|
||
20 'Funktion: Simulation der Planeten-
|
||
30 ' gravitation
|
||
40 'Sprache: GW-Basic
|
||
50 'Autor: Axel Werner
|
||
60 '(C)1991 DMV Widuch GmbH & Co. KG
|
||
70 DEFINT I,S,A,F
|
||
80 INPUT "A: ",A
|
||
90 IF A>5 THEN A=5
|
||
100 IF A<1 THEN A=1
|
||
110 FOR I=1 TO A
|
||
120 PRINT"XP("I"),YP("I"),ZP("I"): ";
|
||
130 INPUT"",XP(I),YP(I),ZP(I)
|
||
140 PRINT"DXP("I"),DYP("I"),DZP("I"): ";
|
||
150 INPUT"",DXP(I),DYP(I),DZP(I)
|
||
160 PRINT"M("I"): ";:INPUT"",M(I)
|
||
170 NEXT
|
||
180 INPUT"MS: ",M(0)
|
||
190 XP(0)=0:YP(0)=0:ZP(0)=0
|
||
200 SCREEN 2:CLS:KEY OFF
|
||
210 WINDOW SCREEN(-320,-250)-(320,250)
|
||
220 G=.006672
|
||
230 FOR I=0 TO A
|
||
240 NXP=XP(I)+DXP(I):NYP=YP(I)+DYP(I)
|
||
250 NZP=ZP(I)+DZP(I)
|
||
260 FOR S=0 TO A
|
||
270 IF I=S THEN 350
|
||
280 X2=XP(S)-XP(I):Y2=YP(S)-YP(I)
|
||
290 Z2=ZP(S)-ZP(I)
|
||
300 D=SQR(X2*X2+Y2*Y2+Z2*Z2)
|
||
310 GK=G*M(S)*M(I)/(D*D)
|
||
320 B=GK/(2*M(I))
|
||
330 X1=X2*B/D:Y1=Y2*B/D:Z1=Z2*B/D
|
||
340 NXP=NXP+X1:NYP=NYP+Y1:NZP=NZP+Z1
|
||
350 NEXT
|
||
360 DXP(I)=NXP-XP(I):DYP(I)=NYP-YP(I)
|
||
370 DZP(I)=NZP-ZP(I):GOTO 400
|
||
380 X%=XP(I):Y%=YP(I):Z%=ZP(I)
|
||
390 F=0:GOSUB 450
|
||
400 X%=NXP:Y%=NYP:Z%=NZP:F=1:GOSUB 450
|
||
410 XP(I)=NXP:YP(I)=NYP:ZP(I)=NZP
|
||
420 NEXT
|
||
430 IF INKEY$="" THEN 230
|
||
440 END
|
||
450 X%=X%+Z%/3
|
||
460 Y%=Y%-Z%/3
|
||
470 PSET(X%,Y%),F
|
||
480 RETURN
|
||
|