Umrechnen von Vektoren bei Richtungsänderung
-
Hallo alle zusammen,
ich bin selbst leider kein Profi auf dem Gebiet der Mathematik, möchte aber doch verstehen was ich programmiere, daher mal die folgende Frage.
Gegeben sind diese Dinge:
ein Objekt in einem 2-dimenisonalen Raum, Position angegeben durch X,Y
die Richtung in die das Objekt zeigt, angegeben durch einen Winkel α (0° liegt im Norden des Raums)
eine Geschwindigkeit v, in der sich das Objekt entsprechend des Winkels bewegt
Meine Frage dazu ist nun: Wie kann ich anhand dieser Attribute die X- und Y-Vektoren berechnen, um das Objekt dann schlußendlich im Programm zu bewegen?
Praktisches Beispiel:
das Objekt hat die Position 111,222
die Richtung (bzw. der Winkel α) beträgt 45°
die Geschwindigkeit v hat einen Wert von 0.5
--> wie berechne ich hier die X- und Y-Vektoren?
Vielen Dank im Voraus für eure Hilfe!
Gruß, Matthias
-
Wenn man den Winkel α relativ zur x-Achse hat:
v_x=vcos(α)
v_y=vsin(α)Du sagst dein Winkel wäre im "Norden" 0°. Ich nehme mal an, das soll heißen, er ist relativ zur y-Achse angegeben. Das gibt dir eine Phasenverschiebung von 90°, d.h. entweder addierst du zu deinem Winkel 90° und nimmst die obige Formel oder du nutzt die periodischen Eigenschaften von Sinus und Cosinus und erhältst:
v_x=-vsin(α)
v_y=vcos(α)Zur Herleitung:
Mal dir das ganze mal hin und zeichne die Geschwindigkeit sowie ihre x- und y-Komponenten ein. Der Geschwindigkeitsvektor bildet mit jeweils einer seiner Komponenten und einer der Koordinatenachsen ein Dreieck mit einem rechten Winkel und einer der anderen Winkel ist α. Mit Hilfe von Sinus bzw. Cosinus kannst du die fehlenden Seitenlängen berechnen.
-
danke, werde ich gleich mal ausprobieren!
-
Das gilt allerdings nur, wenn der Winkel gegen den Uhrzeigersinn gemessen wird. Bei einem Winkel mit dem Uhrzeigersinn muss man das Vorzeichen des Winkels jeweils umdrehen, im System Nord = 0°, Ost = 90° usw. Ergibt das dann
v_x=vsin(α)
v_y=vcos(α)da der Sinus mit dem Winkel das Vorzeichen wechselt, der Cosinus dagegen nicht.