Programmieren mit Looking Glass 3D
PingPongAction
Konzentrieren wir uns nun auf die PongPongAction
-Klasse. Sie ist eigentlich keine Action im Sinne von LG3D, sondern ein Nachfahre von TimerTask
. Sie wird ja alle 10 ms vom Timer
ausgeführt. Der Konstruktor initialisiert einige interne Variablen sowie den Zufallszahlengenerator.
Die Methode run()
wird vom Timer aufgerufen. Hier werden über mehrere teils komplexe Formeln die Position und die Geschwindigkeit des Balles berechnet. Die Formeln beim Aufschlag (Serve()
) habe ich mit einem Maple-Worksheet (siehe weiter unten) hergeleitet.
In Serve()
, das nur pro Aufschlag einmal aufgerufen wird, wird die Position der (per Zufall) ermittelten Ball-Berührung auf der gegenüberliegenden Tischseite mit der Scheibe Mark
markiert.
Mark.setTranslation(TargetX,TargetY,0.0005f);
Die Höhe ist die halbe Höhe der Scheibe (1 mm), da der Mittelpunkt des Objekts eingestellt wird.
Bei jedem Durchlauf von run()
wird die Position des Balles neu eingestellt.
Ball.setTranslation(PosX,PosY,PosZ);
Hier tritt ein kleiner Fehler auf, da der Ball-Durchmesser nicht berücksichtigt wird. Das hebe ich für eine Weiterentwicklung des Programmes auf. :-)
Button und ButtonAppearance
Im Rest der Datei werden noch die Klassen Button
sowie ButtonAppearance
definiert. Mit den soweit präsentierten Informationen, ein bißchen Grips und keiner Scheu vorm Blättern in der Online-Doku ist aber das auch leicht verständlich.
Quellcode
Der Quellcode steht natürlich zum Download bereit. Das Maple-Worksheet (Maple Version 9.01) kann natürlich auch heruntergeladen werden. Wer kein Maple sein Eigen nennt, kann auch den PDF-Ausdruck oder den komprimierten PostScript-Ausdruck herunterladen.
Zusammenfassung
In diesem Tutorial haben wir zuerst Looking Glass 3D installiert. Danach wurde die Installation einer Entwicklungs-Umgebung erklärt. Diese wurde sogleich mit den mitgelieferten LG3D Test-Programmen ausprobiert. Abschließend wurde eine eigene Anwendunge (Ping Pong) entwickelt. Alle wichtigen Teile des Source-Codes wurden erklärt.
Das Programm verträgt noch einige Verbesserungen. Eine Liste der Gedanken befindet sich in der Source-Datei .