2d objekt in bestimmtem winkel verschieben
-
hallo,
wie kann ich denn ohne matrizen einen 2d-vektor um so und so viele einheiten in einem beliebigen winkel verschieben?
und, wie kann ich den winkel von einem zu einem anderen vektor bestimmen?
danke!
lima
-
angle = Math.atan2(clip._y, clip._x); // angle based from (0,0)
Frag mich aber nicht wo Du den Offset eintragen musst, um von einem anderen Punkt aus zu messen... ich kämpfe mit ähnlichen Problemen
http://www.kirupa.com/developer/actionscript/trigonometry.htm
Von da hab ich mir so ein paar erste Tipps geholt und versuche das irgendwie zu begreifen
-
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