Als Bibliothek füer die Benutzerschnittstelle wurde QT in der aktuellen Version 2.3.0 verwendet. QT ist auf den meisten Linux-Systemen bereits installiert, da KDE und KDE2 darauf aufbauen. Wers noch nicht hat, kann es sich bei Trolltech herunterladen, und selbst kompilieren. Entsprechende Links befinden sich auf der Link-Seite. Ausserdem haben wir tmake (auch von Troll) verwendet. Dabei handelt es sich um ein Perl5-Script, das aus einem Projektfile ein Makefile erstellt, das dann direkt mit make kompiliert werden kann. Weitere Informationen zu diesen Tools gibts auf der Seite des C++ Crash-Kurses.
Nun zu Physroom.
Physroom bietet drei verschiedene Arten von Objekten. QuadObjects, SphereObjects und Outer QuadObjects. Diese
verfügen jeweils über verschiedene Eigenschaften und Parameter. Die Outer QuadObjects sind eigentlich
auch nur QuadObjects, jedoch mit leicht anderen Eigenschaften.
Über das File-Menü lassen sich komplette Layouts laden, abspeichern, bzw. neue Layouts erstellen. Ein
Layout umfaßt dabei jeweils eine Menge von QuadObjects, SphereObjects, Outer QuadObjects und den Parametern
der Kamera (Position, Look-At-Point).
Im Menü Control kann die Simulation / das Spiel gestartet und gestoppt werden. Mit Step+ wird die Simulation
angehalten, und um einen Schritt weiterbewegt. Mit Reset kann ein Layout in seinen Startzustand rückversetzen.
Zusätzlich läßt sich mit Load Demo! ein fest gespeichertes Layout laden.
Der nächste, und wahrscheinlich wichtigste Menüpunkt ist Settings. Dort kann das Layout erzeugt, bzw.
verändert werden. Dazu dienen zwei Dialoge. Im ObjectDialog können Flächen und Kugeln eingefügt
werden. Erst einmal zu den QuadObjects, wobei sich die Einstellungen für normale und outer QuadObjects nicht
unterscheiden. Es gibt drei Eingabefelder pro Punkt. Diese geben an, wie die Fläche im Raum liegt. Dann gibt
es einen Reflection value, der angibt, wieviel Energie bei einem Aufprall auf diese Fläche bei der Kugel erhalte
n bleiben soll. Zusätzlich kann über einen Farbdialog die Farbe der Fläche eingestellt werden. Als
letztes gibt es noch eine Slider, mit dem der Alpha-Wert eingestellt werden kann, wobei 0 fuer voll Transparent
und 100 für Opak steht. Die Buttons darunter sind selbsterklaerend. die normalen und die outer QuadObjects
unterscheiden sich darin, wie sie sich bei Beschuß verhalten. Die Aussenwände können durchschossen
werden, die inneren nicht!
Für SphereObjects gibt es mehr Möglichkeiten! Als erstes den Center-Punkt. Dieser gibt an, wo sich die
Kugel beim Start befindet. Die Move Direction ist ein normalisierter Vektor. Sie ist die Startrichtung der Kugel.
Durch den Acceleration Vector kann eine Gravitation aus einer beliebigen Richtung eingestellt werden. Auch hier
kann ein Reflection-value eingestellt werden, der angibt, wieviel Energie diese Kugel bei einem Aufprall behält.
Die Explosion force ist eine Kraft, die beim zerschießen einer Kugel, ähnlich einer Druckwelle, frei
wird. Dadurch werden die umliegenden Kugeln aus ihrer Bahn geworfen. Radius, Mass, Color, Alpha und die Buttons
sollten klar sein.
durch die Refresh-Rate wird angegeben, wie lange ein Schritt dauern soll. Auf 3D-Hardwarebeschleunigten Rechnern
spielt das eine große Rolle. Gibt es keine, schafft der Rechner meist sowieso nicht alle Berechnungen, und
die Frame-Rate sinkt automatisch.
Im CameraDialog kann zwischen drei Modi gewählt werden. Automatic: die Kamera-Position und der Look-At-Point
werden anhand der Größen und Positionen der Objekte errechnet. Static: Die Werte werden manuell gesetzt.
Dynamic: SphereObject No. 1 wird mit dem Abstand Dist. to Sphere verfolgt.
Verschiedene Informationen, wie z.B. die Anzahl der Quads und Spheres oder die Frames pro Sekunde können in
der Statusleiste abgelesen werden.