Die Idee, die dahinter steht, ist folgende:
Man bestimmt, wie weit die Maus vom Bildschirmmittelpunkt entfernt ist. Daraus erhält man zwei Steuerausschläge dx und dy, bezogen auf die Bildschirmauflösung. Das ist in etwas das gleiche, als würde man den Lenkausschlag eines Joystick abfragen.
Aus diesen Steuerausschlägen bestimmt man, wie weit sich das Raumschiff um die entsprechende Achse drehen soll. Je größer der Ausschlag, desto weiter kann auch rotiert werden. Für dx z.B. die Achse, die senkrecht durch das Schiff (meist y-Achse, oder yaw) läuft und für dy die Querachse (meist x-Achse, oder pitch). Die Längsachse ist die Bewegungsrichtung (meist z-Achse, oder roll), um die das Schiff rollen kann.
Bedenke dabei: wenn ich um eine Achse rotiere, bleibt die Achse selbst unverändert; betroffen sind jeweils nur die beiden anderen Achsen.
Die Rotation kann man für DX9 z.B. mit D3DXMatrixRotationYawPitchRoll berechnen lassen. Für GL gibt es vermutlich auch sowas in der Richtung. Wenn ich also meine Rotationen durchgeführt habe, gibt es eine neue Ausrichtung des Schiffes. Die Position bestimmt sich aus der Längsachse und der aktuellen Geschwindigkeit.
In Bezug zur Autosteuerung gibt es einen sehr wesentlichen Unterschied. Beim Auto hat man nur einen Winkel, der die Richtung bestimmt. Im Raumschiff sind das drei unabhängige Winkel und die direkte Berechnung der Richtung, so wie sie im Autobeispiel steht, wäre recht unübersichtlich. Darum benutzt man für diesen Fall eben Matrix-Rechnung, mit der man ja transformieren kann.
Aus yaw-pitch-roll zusammen mit der neuen Position des Schiffes, kann ich mir nun eine Kamera-Transformation bauen, und alles sieht richtig aus. Man schaut entlang der z-Achse die genau durch die Bildschirmmitte läuft.
Der Mauszeiger wird hart wieder die Mitte gesetzt, damit man bei jeder Abfrage wieder die Maus bewegen muss, um weiterzusteuern (so als hätte man den Joystick wieder losgelassen). Wenn man das nicht macht, steuert man solange, wie die Maus nicht wieder auf die Startposition bewegt wurde; dann wird geradeausfliegen aber schwerer)
Der Unterschied zwischen einer (einfachen) Tastaturabfrage und der Mausposition (oder eines Joystick) ist einfach der, dass man mit der Tastatur immer einen konstanten Steuerausschlag bewirkt und mit der Maus eben je nach Bewegungsweite einen anderen.
Der Rest ist dann einfach die Mathematik, was eigentlich nicht schwer ist, wenn man gut weiss, was es mit Transformationen auf sich hat. Ohne diesen Hintergrund wird es allerdings schwierig, sowas umzusetzen.
Gruss,
Rainer