Projektarbeit im Labor Informatik im SS 2007

Version: 1.1 Datum: 12.Mai.2007
Wie Sie wissen, ist die eigenständig programmierte Projektarbeit eine der Voraussetzungen für den unbenoteten Schein über die erfolgreiche Teilnahme am Labor. Es ist mir lieber, Sie geben ein sehr unvollständiges Projekt ab, das Sie selber erarbeitet haben, als die perfekte copy-and-paste Lösung...

Was den Arbeitsaufwand betrifft: Wie Sie der Beschreibung des Informatik-Moduls mit 5 Credits entnehmen können, beträgt die sog. Kontaktzeit 75 Stunden. Die Zeit für Ihr Selbststudium ebenfalls 75 Stunden. Das Selbststudium besteht aus 20 Stunden Prüfungsvorbereitung und die verbleibenden 55 Stunden Selbststudium würde ich zu etwa gleichen Teilen auf Vorlesungsnachbereitung, auf Programmierarbeiten für das Labor und auf die Projektarbeit verteilen. Das bedeutet konkret, dass Sie ca. 15 bis 20 Stunden für eine der folgenden vier Aufgaben investieren sollten.

Die Projektarbeit besteht - wie bereits gesagt - aus vier möglichen Aufgabenstellungen, von denen Sie eine bearbeiten müssen. Alle vier verwenden in diesem Semester die LCGI Grafik-Bibliothek von Prof. Dr. Herold aus Nürnberg, für die Sie im Netz eine Anleitung und die Implementierung unter Windows downloaden können.

Wenn Sie sich für die relativ einfache Aufgabe 1 entscheiden, müssen Sie sie alleine bearbeiten. Für die Aufgaben 2 und 3 dürfen Sie Zweier-Teams bilden. Die Aufgabe 4, ein Projekt Ihrer Wahl unter Verwendung von LCGI, kann von bis zu vier Studierenden im Team bearbeitet werden; Sie müssen Ihre Projektidee und die Team-Zusammensetzung aber von Ihrem Betreuer vorab(!) genehmigen lassen.

1. Aufgabe: TrOn für zwei Spieler

TrOn ist ein Spiel, das durch den gleichnamigen Film bekannt geworden ist. Eine anspruchsvolle Variante des Spiels TrOn zum Ausprobieren und Lesen der Spielregeln finden Sie, wenn Sie auf den Link "Anspruchsvolle Variante von TrOn" klicken. Es handelt sich hier um eine Spielvariante, bei der 1 Spieler gegen den Computer spielt.
Eine "Einfachere Variante" für die Programmierung ist es sicherlich, wenn - wie im zweiten angegebenen Link - zwei menschliche Spieler gegeneinander spielen. Somit entfällt das Problem, eine intelligente Strategie für das Verhalten des Computers zu implementieren, was - je nach Qualität der Strategie - nur von sehr guten Studenten lösbar wäre.
In Aufgabe 1 sollen Sie so eine einfache Variante programmieren. Dabei fallen die in der Vorlesung besprochenen "mathematischen Koordinaten" gar nicht an: Sie "denken" nur in Pixeleinheiten des Grafikfensters.

Bälle

2. Aufgabe: Eine physikalische Aufgabe - Ballistische Kurven

Die Idee zur Aufgabe entstand, als mein 15-jähriger Markus aus dem Physikunterricht die Parabelflugbahnen eines Tennisballes mitbrachte. Aus dem Wunsch, die Luftreibung einzubeziehen, entstand ein Programm, mit dem wir so eine Flugbahn simulieren konnten. (Mit Operationsverstärkern, also einem Analog- statt Digitalrechner, kann man das Problem übrigens auch ausgesprochen hübsch lösen.) Die Flugbahn nennt sich "ballistische Kurve" - und schon sind wir weit weg von der "zivilen" Anwendung Tennisball bei der Flugbahn von Kanonenkugeln. Die Abbildung links zeigt im Größenvergleich zum Tennisball eine Vollkugel aus schwedischem Marmor, die im 30-jährigen Krieg von den Schweden bei einer der drei Belagerungen der Stadt Landshut verschossen worden war. Sie blieb - Gott sei Dank ohne Schaden anzurichten - im Kirchturm der Heilig-Geist-Kirche stecken, wo sie ca. 1965 geborgen wurde. Das Programm könnte aber auch eingesetzt werden, um den Grenzwert der Fallgeschwindigkeit eines Fallschirmspringers zu rechnen etc., also immer, wenn Luftreibung und Gravitationskraft an einem Körper angreifen. Auftrieb an Tragflächen ist aber erst mal nicht mit eingeschlossen.

2.1 Hintergrundwissen

Das Koordinatensystem für die Berechnung soll so gewählt werden, dass die x-Achse nach rechts (Flugrichtung) und die y-Achse nach oben gerichtet ist (entgegen der Schwerkraft). Zum Startzeitpunkt t=0 gibt man den Ort des Körpers und die Geschwindigkeit des Körpers vor:

Nun wird die Flugbahn in kleine Zeitschritte aufgeteilt. Bei jedem Zeitschritt verändert sich der Ort des Körpers gemäß seiner momentanen Geschwindigkeit (die während des Zeitschritts als konstant angenommen wird):

Außerdem ändert sich bei jedem Zeitschritt auch die Geschwindigkeit des Körpers, denn auf den fliegenden Körper wirken zwei Kräfte: Die Gravitationskraft wirkt in y-Richtung und die Reibungskraft wirkt dem momentanen Geschwindigkeitsvektor entgegengerichtet. Dem Betrage nach ist die Reibungskraft proportional zum Quadrat der momentanen Geschwindigkeit.
Für die Kräfte gilt:

Die Kräfte bewirken, wenn sie während eines Zeitschrittes konstant wirken, eine Impuls- bzw. eine Geschwindigkeitsänderung

Damit haben wir nach einem Zeitschritt einen neuen Satz von Orts- und Geschwindigkeitskoordinaten und das iterative Verfahren beginnt von vorne.

Das Verfahren ist ein einfaches lineares Verfahren mit einem Fehler 2. Ordnung. Man kann es einfach programmieren, aber man braucht eine kleine Schrittweite, um eine akzeptable Genauigkeit zu erreichen, z.B. 0,00001 Sekunde Schrittweite. Es gibt bessere Verfahren: Die Runge-Kutta-Verfahren. Hier ist nicht nur der Fehler von nur noch 5. Ordnung, sondern man kann das Verfahren so modifizieren, dass die Schrittweite sich adaptiv und automatisch so verändert, dass eine vorgegebene Rechengenauigkeit erreicht wird. Eine ausführliche Darstellung finden Sie in einem älteren Skript von mir; zum Öffen benötigen Sie dasselbe Passwort wie für das Vorlesungsskript:

SkriptRungeKutta.pdf - 129.8 KB

Flugbahn

2.2 Ihre Aufgaben

 

Es ist dem Programm "egal", ob Sie Flugbahnen von Tennisbällen oder Kanonenkugeln berechnen.

  • Stellen Sie einzelne Flugbahnen mit der LCGI-Grafik dar.

  • Optional: Geben Sie die berechneten Daten in einer Excel-Datei (csv-Datei) aus (Zeit t, Ort x,y Geschwindigkeit vx und vy). Dann kann man daraus auch vergleichende Excel-Grafiken erzeugen.
  • Untersuchen Sie den Einfluss der Schrittweite auf das Ergebnis.
  • Bestimmen Sie den Abschusswinkel, unter dem eine maximale Flugweite erzielt wird. Erinnern Sie sich: Ohne Luftwiderstand waren es 45° Abschusswinkel - mit Luftwiderstand sind es 29°, wie die folgende Abb. zeigt.

 

  • Für den Tennisball können Sie mit einer Masse von 57g, einem Durchmesser von 6,4 cm, einem cw-Wert von 0,35 und einer Anfangsgeschwindigkeit von 200 km/h rechnen.
  • Für die Kanonenkugel wäre die Masse 1,85 kg bei einem Durchmesser von 11 cm und der cw-Wert ist wiederum 0,35. Unsicher bin ich mit der Startgeschwindigkeit. Rechnen Sie mal mit 500 m/s.
  • Und was mir besonders wichtig ist: Schreiben Sie eine wenigstens einseitige Analyse des ethischen Problems, vor das fast jeder Ingenieur in seinem Berufsleben gestellt wird: Wie weit bin ich ganz persönlich bereit, bei der Entwicklung militärischer Technik zu gehen? Dabei möchte ich in keiner Weise Ihre Meinung und Ihr Resultat der Analyse beeinflussen. Aber ich möchte gerne, dass Sie sich eine eigene Meinung zu diesem Thema bilden - bevor Sie, wie ich es in meinem Berufsleben war, entweder völlig überraschend mit dieser Frage oder aber einem schleichenden Prozess immer weiterführender Aufgabestellungen mit militärischer Technik konfrontiert werden.

 

 

3. Aufgabe: TrOn mit eingebauter Intelligenz

Realisieren Sie das Spiel TrOn aus Aufgabe 1 für nur einen Spieler. Das bedeutet, dass der 2. Spieler von Ihrem Programm übernommen werden muss. Die Schwierigkeit liegt in einem "intelligenten" Algorithmus für eine Spielstrategie des Rechners.

Feigenbaum

4. Aufgabe: Eine LCGI-Grafik-Problem Ihrer Wahl

Sie dürfen Ihren Übungsgruppenleiter auch mit eigenen Ideen ansprechen. Beispielsweise könnten fraktale Grafiken (z.B. 9 Stück im A3-Format ausgedruckt) ein schönes Poster zum Aushang in unserem Gebäude sein...
Links z.B. einen selbst gerechneter Feigenbaum-Fraktal.


Bekannt sind auch die Mandelbrot-Menge (sogenanntes Apfelmännchen) oder die Julia-Menge. Einen schönen Einstieg finden Sie z. B. bei "Wikipedia unter Fraktal".

Eine weitere denkbare Aufgabe, auf die wir am 09. Mai 2007 in der Vorlesung von ME2C gestoßen sind, ist eine grafische Variante von "Towers of Hanoi", die statt der einfachen Grafik im Consol-Fenster die anspruchsvollere echte LCGI-Grafik verwendet.