Aktuelle Zeit: 28.04.2024, 06:06

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rotation eines 2D-Vektors
BeitragVerfasst: 23.01.2008, 00:44 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Hallo!

Ich weiß nicht, ob ich einfach nur zu blöd bin, oder das wirklich nicht so trivial ist.
Folgendes Problem:

Ich bastel grad ein kleines 2D-Minigame und benutze dafür Irrlicht (ich weiß ^^)
Im moment bin ich dabei die Steuerung zu implementieren. Sie soll mal so werden wie Asteroids. (Heißt Nach links und rechts rotieren und nach vorne und hinten bewegen)

Das rotieren funktioniert schon einwandfrei. Das Problem ist nun die Bewegung entsprechend der Rotation des Bildes.
Wenn keine Rotaion vorhanden ist, ist die Bewegung entlang der Achse, also wie es sein soll.
Jedoch bekomm ich kranke Werte, wenn eine Rotation ungleich 0° vorhanden ist. (Der Vektor ist [1,0] wird dann aber nach z.B. [75,-58] bei 15° rotiert O.o)

Um mal zu verdeutlichen was ich möchte siehe die Grafik im Anhang.

Zum berechnen des Vektors, der in die "Fahrrichtung" zeigt dient folgender Code:
Code:
vector2df p(0,SHIP_MOVE_SPEED);

vector2df center;
center.X = TexRect.getCenter().X;
center.Y = TexRect.getCenter().Y;

p.rotateBy(RotDeg,center);
Velocity = p;

SHIP_MOVE_SPEED ist 1, also eine Einheit pro Aufruf
TexRect ist das Rect, in dem aktuell die Texture gezeichnet wird inkl. Transformation, Rotation, etc.
RotDeg ist die rotation des Objekts.

Und zum updaten dient folgender Code:
Code:
Position += Velocity;

TexRect = rect<s32>(vector2Position(Position),TexSize);

Velocity.set(0,0);


Ich vermute mal stark, dass das Problem bei der Rotation des Geschwindigkeitsvektors liegt, jedoch bin ich was Vektoren angeht nicht sehr bewandert und hoffe, dass jemand helfen kann den Fehler zu finden.

Danke schonmal im voraus.


Dateianhänge:
2d_rot.jpg
2d_rot.jpg [ 13.15 KiB | 3282-mal betrachtet ]

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotation eines 2D-Vektors
BeitragVerfasst: 23.01.2008, 16:38 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
erst um (0,0) rotieren und dann center addieren.
oder p+=center und dann um center rotieren.

[edit]
du brauchst doch center gar nicht. p bzw Velocity wird doch zur position der linken oberen ecke dazugerechnet, da isses doch egal wie groß die textur ist.
also einfach um 0,0 rotieren.
(ein vektor verschiebt ja nur einen punkt in einen anderen)

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotation eines 2D-Vektors
BeitragVerfasst: 23.01.2008, 18:45 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Jo danke. Da bin ich nicht drauf gekommen >.<
Funktioniert einwandfrei

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de