Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

Kugelsimulation (BwInf)

  Alt 19. Apr 2005, 20:34
Nun, da der Einsendeschluss vorbei ist, möchte ich hier mein Programm vorstellen, ich habe aus Spaß an der Freud' mal die erste Aufgabe gelöst, da ich schon immer mal eine einfache Simulation schreiben wollte.

Die Aufgabenstellung lautet folgendermaßen:
Auf einer unbeschränkt großen Ebene klebt anfangs an einer Stelle eine Kugel. Nun kommen
immer wieder Kugeln derselben Größe aus zufälligen Richtungen angerollt. Trifft zum ersten
Mal eine solche auf die Urkugel, dann bleibt sie fest an ihr kleben und es entsteht ein Gebilde
aus zwei Kugeln. Trifft die nächste Kugel darauf, bleibt sie wieder fest kleben, und so
geht es immer weiter. Auf diese Weise entsteht um die Urkugel eine immer größere Figur,
an welcher immer mehr Kugeln kleben bleiben. Man könnte erwarten, dass ein hässlicher,
unförmiger Klumpen entsteht. Tatsächlich ist dies nicht der Fall: Es entsteht etwas Interessantes
und Schönes.

Schreibe ein Programm, das dieses Experiment mit möglichst vielen Kugeln durchführen
und das entstandene Bild ausgeben kann. Diskutiere dazu verschiedene Möglichkeiten,
den Zufallsprozess (unter Benutzung eines vorhandenen Zufallszahlengenerators)
zu modellieren. (...)


Ich habe mich bemüht, das ganze möglichst Objekt-orientiert und doch performant zu lösen (für 100.000 Kugeln in 4 s reicht's leider nicht)

Performance:
Der zeitaufwand steigt enorm mit der Anzahl der Kugeln, meine größte Simulation hat ein 5 MB File hervorgebracht, kurz bevor das Programm abgestürtzt ist ...

Im Anhang könnt ihr eine Beispielanwendung sehen, ihr müsst eure Werte einstellen
Kugeln Maximale Kugelanzahl
Speed Geschwindigkeit in %
dynamische Es wird versucht, immer soviele rollende Kugeln zu haben

Ihr müsst erst die Werte einstellen, dann Start drücken, und dann nochmal weiter ...

Quellcode im Anhang : (schön kommentiert, zumindest 70% )
Angehängte Dateien
Dateityp: exe simtest_207.exe (454,0 KB, 198x aufgerufen)
Dateityp: txt unit2_203.txt (16,4 KB, 60x aufgerufen)
  Mit Zitat antworten Zitat