Berechnung einer Drehung

Hallo zusammen!

Ich schreibe derweil gerade an einem kleinen Spiel mit Server und Client und stehe vor einem mathematisch/programmiertechnischen Problem.

Man stelle sich vor, der Spieler stünde im Raum. Er hat die Möglichkeit sich nach vorne zu bewegen und die Möglichkeit sich nach links um die eigene Achse zu drehen und kann das auch gleichzeitig tun.

Nehmen wir weiter an, der Spieler würde sich mit einer Geschwindigkeit von 7 Einheiten/Sekunde bewegen und PI-Radian/Sekunde drehen. Nun ist das Problem, dass der Server diese Bewegung selbständig nachrechnen sollte und somit die Position immer ein paar Mal pro Sekunde updaten. Nun ist mein Problem, dass ich es irgendwie nicht schaffe herauszufinden an welcher Position der Spieler sein muss zum Zeitpunkt Y.

Also sozusagen folgende Aufgabenstellung an mich selber:
„Wo ist Spieler A wenn er zum Zeitpunkt X mit einer Geschwindigkeit von 7 Einheiten pro Sekunde und einer Drehrate von 180° pro Sekunde losläuft nach Y Millisekunden?“.

Hat jemand von euch eine Ahnung, wie sich dies realisieren lassen würde?

Beste Grüsse
Palandrion

Hallo Palandrion,

Also sozusagen folgende Aufgabenstellung an mich selber:
„Wo ist Spieler A wenn er zum Zeitpunkt X mit einer
Geschwindigkeit von 7 Einheiten pro Sekunde und einer Drehrate
von 180° pro Sekunde losläuft nach Y Millisekunden?“.

Da fehlt noch ob die Drehung links oder rechts herum ist.

Er geht im Kreis.

Umfang des Kreises:
(360°/180°)*7 Einheiten

Zeit für den Vollkreis:
(360°/180°) Sekunden.

Aus dem Kreisumfang kann man den Radius berechnen.

Und aus der Zeit für den Vollkreis den Winkel des Kreissegments nach X ms.

MfG Peter(TOO)

Hallo Peter(TOO)

Vielen Dank für deine Hilfe! Als ich es gelesen habe war mir eigentlich klar, dass es so funktionieren wird, allerdings war ich dann erstaunt, dass meine Messungen innerhalb des Spiels irgendwie andere Werte lieferten…

Wenn ich zum Beispiel meine Geschwindigkeit auf 10 Einheiten stelle und die Drehrate bei PI Radian/Sekunde lasse, so errechne ich anhand der Formeln einen Radius von 3.183 (20 / (2 * PI)) messe im Spiel jedoch einen Radius von 4.204.

Die Zeit jedoch stimmt bis auf ein paar marginale Differenzen auf Grund der nicht ganz optimalen Bedienung der spieleigenen Stoppuhr genau.

Irgendwie kann ich mir die Differenz nicht erklären, aber ich schaue mal weiter, vielleicht liegt ja der Fehler bei mir im Client, obwohl da eigentlich eine 3D-Engine für die Bewegungen zuständig ist :smile:.

Gruss
Palandrion

Hallo Palandrion,

Wenn ich zum Beispiel meine Geschwindigkeit auf 10 Einheiten
stelle und die Drehrate bei PI Radian/Sekunde lasse, so
errechne ich anhand der Formeln einen Radius von 3.183 (20 /
(2 * PI)) messe im Spiel jedoch einen Radius von 4.204.

Irgendwie kann ich mir die Differenz nicht erklären, aber ich
schaue mal weiter, vielleicht liegt ja der Fehler bei mir im
Client, obwohl da eigentlich eine 3D-Engine für die Bewegungen
zuständig ist :smile:.

Da stellt sich die Frage, wie die Engine das rechnet. Inbesonders spielt hier die Auflösung und die Rundungsfehler eine Rolle. Um Rechenzeit zu sparen, wird gerne mit Integern gerechnet.

MfG Peter(TOO)