Autor Beitrag
Mari
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Sa 21.12.02 15:04 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Sa 21.12.02 16:56 
Schau dir mal die Vektorrechnung an (Skalarprodukt, Betrag eines Vektors, Ortsvektor ...). Das brauchst du bei deinem Problem.

_________________
If accidentally read, induce vomitting.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 21.12.02 19: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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Psycho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 22.12.02 18: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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 22.12.02 18: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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 23.12.02 10: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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 23.12.02 11:28 
Ach so! :idea:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".