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:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!