Entwickler-Ecke

Sonstiges (Delphi) - Mathematische Frage


Mari - Sa 21.12.02 16:04
Titel: Mathematische Frage
Ich möchte für ein Spiel ein Objekt haben, das sich auf 2 Achsen bewegen und sich um eine Achse drehen kann. Nachdem sich das Objekt gedreht hat soll es sich natürlich nicht mehr in die gleiche Richtung weiterbewegen wie davor, sondern in die Richtung, die jetzt "vorne" ist Mit welcher Formel kann ich das berechnen?

Ich habe folgende Angaben:
-Aktuelle Position
-Drehwinkel
-Angabe wie weit es sich bewegen soll

Ich brauche:
-Neue Position
-angabe wo nach dem drehen vorne ist

Mari


Ex0rzist - Sa 21.12.02 17:56

Schau dir mal die Vektorrechnung an (Skalarprodukt, Betrag eines Vektors, Ortsvektor ...). Das brauchst du bei deinem Problem.


Christian S. - Sa 21.12.02 20:16

Wie der Teufelsaustreiber schon ganz richtig sagte, benötigst Du dazu ein wenig Vektorrechung. Dein Objekt ist durch einen Ortsvektor und einen Geschwindigkeitsvektor vollständig beschrieben.

Dann erfährt Dein Objekt entweder eine Translation oder eine Rotation.

Bei Translation errechnest Du die neue Position nach einer Zeiteinheit ganz einfach durch Addition des Geschwindigkeitsvektors zum Ortsvektor.

Bei Rotation ist das nicht ganz so einfach. Bei der Rotation ändert sich natürlich nicht der Ortsvektor, sondern der Geschwindigkeitsvektor. Damit bekommst Du heraus, wie Dein gedrehter Vektor aussieht. Wenn Dein alter Geschw.vektor die Komponenten (a,b) hatte und er sich um den Winkel µ dreht, so sieht Dein neuer Vektor so aus:
(a*cosµ - b*sinµ , a*sinµ + b*cosµ)

Hoffe, ich konnte Dir helfen!

MfG,
Peter


Psycho - So 22.12.02 19:38

Dazu müßte man wissen, ob sich Dein Objekt um eine beliebige Strecke voranbewegen kann, oder nur um bestimmte Schritte, wie etwa beim Schach oder auf die Schnittpunkte eines Koordinatensystems.

Andersgesagt: Beregt es sich um Schritte (Stufen) oder kontinuierlich?

Gruss Psych


Christian S. - So 22.12.02 19:50

Da der Rechner keine kontinuierliche Zeit hinbekommt, sondern immer nur diskrete Werte, ist das irrelevant. Wenn Du in Deinem Programm eine Geschwindigkeit festlegst, kannst Du mit diskreten Zeitwerten auch nur diskrete Weglängen erzeugen.

MfG,
Peter


Udontknow - Mo 23.12.02 11:34

Hi!

Dass auf einem Rechner, der nun einmal digital arbeitet, nun keine analogen Operationen vollzogen werden können, ist doch klar.
Ich glaube, Psycho wollte nur sagen, daß man abschliessend evtl. noch das Ergebnis (die neue Position) anpassen muss. Beim Schach z.B. stehen die Figuren eben grundsätzlich auf einem Feld, und nicht zur Hälfte auf dem einen, zur Hälfte auf dem anderen.

Cu,
Udontknow


Christian S. - Mo 23.12.02 12:28

Ach so! :idea: