2d objekt in bestimmtem winkel verschieben
-
Rotation um den Ausgangspunkt:
new_x = cos(winkel)*x + sin(winkel)*y new_y = -sin(winkel)*x + cos(winkel)*y
Rotation um beliebigen Punkt
x -= center_x y -= center_y new_x = cos(winkel)*x + sin(winkel)*y new_y = -sin(winkel)*x + cos(winkel)*y new_x += center_y new_y += center_y
winkel im Uhrzeigersinn. Fals anders herum erwünscht ist dann alle Sinus negieren.
-
wie kann ich denn ohne matrizen einen 2d-vektor um einen beliebigen winkel verschieben?
cos(winkel)*x + sin(winkel)*y
-sin(winkel)*x + cos(winkel)*yaka. rotationsmatrix
-
hellihjb schrieb:
wie kann ich denn ohne matrizen einen 2d-vektor um einen beliebigen winkel verschieben?
cos(winkel)*x + sin(winkel)*y
-sin(winkel)*x + cos(winkel)*yaka. rotationsmatrix
Merkt der bestimmt nicht.
-
Winkel bekommst Du mit Skalarprodukt heraus.
Für Rotationen empfiehlt sich, wie bereits vorgeschlagen, die Rotatationsmatrix.
-
aber wieso rotation? was ich will, ist einen vektor in einem bestimmten winkel (bspw. 45°) bei einer bestimmten geschwindigkeit (zb. 5px pro aufruf) verschieben.
-
also translation
-
Translation ist einfach: Du nimmst den Vektor um den Du verschieben willst und addierst den drauf. Okay, wie bekommt man den Vektor.
Einen von vorgegebener Länge ist einfach: länge*(1,0) ist so einer. Nur in die richtige Richtung zeigt er noch nicht. Und genau das bewerkstelligt man mit einer Rotation.
-
lima schrieb:
aber wieso rotation? was ich will, ist einen vektor in einem bestimmten winkel (bspw. 45°) bei einer bestimmten geschwindigkeit (zb. 5px pro aufruf) verschieben.
Vielleicht solltest du dich mal etwas genauer ausdrücken.
Was genau soll dein Winkel aussagen?
-
Jan schrieb:
lima schrieb:
aber wieso rotation? was ich will, ist einen vektor in einem bestimmten winkel (bspw. 45°) bei einer bestimmten geschwindigkeit (zb. 5px pro aufruf) verschieben.
Vielleicht solltest du dich mal etwas genauer ausdrücken.
Was genau soll dein Winkel aussagen?die richtung, in die der vektor verschoben wird
-
lima schrieb:
die richtung, in die der vektor verschoben wird
Achso, dann musst du doch nur mittels Richtung und Länge einen "Verschiebungsvektor" berechnen (Stichwort Polarkoordinaten) und den dann zu deinem Ursprünglichen hinzuaddieren.
Allerdings beinhaltet das dann natürlich eine Drehung, aber das müsste dir ja klar sein, denn ein verschobener Vektor mit gleicher Richtung und gleicher Länge wäre ja derselbe Vektor.
-
ok, habs geschnallt.
hat jemand vielleicht ein tutorial, in dem man in die syntax von matheformeln eingeführt wird? am besten für überhauptnichtmathematiker. ein tutorial zur einführung in vektor/koordinatensystemkram wäre auch nett.
thx