Hallo Joachim,
anstatt mich ins Bett zu legen,
habe ich mal einen Hack versucht
Konkret möchte ich eine Simulation einer Planetenbahn
programmieren;
Dazu möchte ich in einer Schleife eine Runge-Kutta´-Methode
für die Berechnung der x,y-Koordinaten verwenden. Diese sollen
in jedem Iterationsschritt auf den Monitor als Punkt
ausgegeben werden.
Ich bin soweit, dass ich die Positionen
als „Zufallsinkrement“ bestimme, Du musst
also noch die Integration einfügen
(unten in grav_run):
- - - - 8new;
$bild = $m-\>Canvas(-width =\> 500, -height =\> 500, -background =\> 'black') ;
# sonne und planet rein
$sonne = $bild-\>create('oval'=\>$sx-10,$sy-10,$sx+10,sy+10,-fill=\>'yellow');
$planet = $bild-\>create('oval'=\>$px-5, $py-5, $px+5, $py+5,-fill=\>'blue');
# schaltknopf rein
$butt = $m-\>Button(-text=\>'Starten','-command'=\>sub{grav\_run($bild,$butt)});
# oben grafik, unten knopf
$bild -\> pack;
$butt -\> pack;
# start
MainLoop;
# ende
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sub grav\_run {
my ($canvas, $button) = @\_;
# Button umschalten (quark aber egal)
$button -\> configure(-text =\> 'Beenden', -command =\> \&exit);
# neue position berechnen (Integration!)
$px = ($px + ((rand 2)-1) \* 16) % 500; $px = 499 if ($px coords($planet, $px-5, $py-5, $px+5, $py+5);
# nach 50 ms wieder aufrufen (nächste iteration)
$m-\>after(50, [\&grav\_run, $bild, $butt]);
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Starten unter Win im DOS-Fenster
mit C:> perl planet.pl
Grüße
CMБ