Code: Alles auswählen
Structure planet
name$
farbe.l
radius.d
masse.d
x.d
y.d
speed.d
richtung.d ;in bogenmaß: 360° = 2*#pi
EndStructure
Global NewList planet.planet()
#Window_0=0
#ScrollArea_0=0
#zoom=100000 ;vergrößert/verkleinert alles
#lupe=50 ;vergrößert/verkleinert nur die planeten
#grav=6.67428e-11 ;"m^3/(kg*sec^2)"
#x_offset=50 ;verschiebt die x-achse richtg. bildsschirmmitte
#y_offset=400 ;verschiebt die y-achse richtg. bildsschirmmitte
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 800, 600, "Gravitation", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ScrollAreaGadget(#ScrollArea_0, 0, 0, 1284, 748, 8192, 8192, 10)
ImageGadget(1, 0, 0, 8192, 8192, ImageID(1))
CloseGadgetList()
EndIf
EndIf
EndProcedure
If AddElement(planet())<>0
planet()\name$="erde"
planet()\farbe=RGB(0,50,250)
planet()\radius=#lupe*(12756+12714)/4 ;mittlerer radius in km
planet()\masse=5.974e23 ;kg
planet()\x=1.496e8 ;mittlerer sonnenabstand in km
planet()\y=0
planet()\speed=29.78 ;km/sec
planet()\richtung=2*#PI
EndIf
If AddElement(planet())<>0
planet()\name$="sonne"
planet()\farbe=RGB(250,250,0)
planet()\radius=#lupe*1.3914e6/2 ;km
planet()\masse=1.989e30 ;kg
planet()\x=0
planet()\y=0
planet()\speed=0 ;km/sec
planet()\richtung=0
EndIf
If AddElement(planet())<>0
planet()\name$="mond"
planet()\farbe=RGB(75,75,75)
planet()\radius=#lupe*3476/2 ;km
planet()\masse=7.349e22 ;kg
planet()\x=1.496e8+(363200+405500)/2
planet()\y=0
planet()\speed=1.023+29.78 ;km/sec (rel. zur sonne)
planet()\richtung=2*#PI
EndIf
If AddElement(planet())<>0
planet()\name$="venus"
planet()\farbe=RGB(200, 200, 200)
planet()\radius=#lupe*(12103.6+12103.6)/4 ;km
planet()\masse=4.869e24 ;kg
planet()\x=108210000
planet()\y=0
planet()\speed=35.02 ;km/sec
planet()\richtung=2*#PI
EndIf
If AddElement(planet())<>0
planet()\name$="merkur"
planet()\farbe=RGB(75,75,75)
planet()\radius=#lupe*(4879+4879)/4 ;km
planet()\masse=3.302e23 ;kg
planet()\x=57910000
planet()\y=0
planet()\speed=47.87 ;km/sec
planet()\richtung=2*#PI
EndIf
If AddElement(planet())<>0
planet()\name$="jupiter"
planet()\farbe=RGB(200, 100, 50)
planet()\radius=#lupe*(142984+133708)/4 ;km
planet()\masse=1.899e27 ;kg
planet()\x=778570000
planet()\y=0
planet()\speed=13.07 ;km/sec
planet()\richtung=2*#PI
EndIf
If AddElement(planet())<>0
planet()\name$="mars"
planet()\farbe=RGB(200, 50, 50)
planet()\radius=#lupe*(6794+6750)/4 ;km
planet()\masse=6.419e23 ;kg
planet()\x=227920000
planet()\y=0
planet()\speed=24.13 ;km/sec
planet()\richtung=2*#PI
EndIf
;******************* main ********************
;open_window_0()
;Repeat
;StartDrawing(WindowOutput(0))
;ResetList(planet())
;While NextElement(planet())
; Circle((planet()\x)/#zoom+#x_offset, planet()\y/#zoom+#y_offset, planet()\radius/#zoom, planet()\farbe)
;Wend
;StopDrawing()
;Until WaitWindowEvent() = #PB_Event_CloseWindow
;****************** main **********************
;****************** main **********************
CreateImage(1, 8192, 1000, #PB_Image_DisplayFormat)
ResetList(planet())
StartDrawing(ImageOutput(1))
While NextElement(planet())
Circle((planet()\x)/#zoom+#x_offset, planet()\y/#zoom+#y_offset, planet()\radius/#zoom, planet()\farbe)
Wend
StopDrawing()
open_window_0()
Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow
;****************** main **********************
End
irgendwann soll sich das ganze natürlich auch drehen, am besten in 3d