Richtungsvektor um 90 Grad drehen



  • Eigentlich ganz einfach.
    Ich hab einen Vektor (0.7,0.7)
    und möchte diesen um 90 Grad drehen, um ihn in (0.7,-0,7) zu verwandeln, kenne jedoch die Formel nicht.
    Es ist vermutlich ganz einfach doch ich komm einfach nicht drauf.



  • Du vertauscht x mit y und setzt vor eine Koordinate ein Minus. Ansonsten: Rotationsmatrizen gibt es auch fuer 2D.



  • Vielen Dank, aber
    ich fühl mich jetzt dumm das ich da nicht selbst drauf gekommen bin.
    Hätte nie damit gerechnet das es so einfach ist.

    Schönes Wochenende



  • alterbro schrieb:

    ich fühl mich jetzt dumm das ich da nicht selbst drauf gekommen bin.

    Ich kenne Deine Vorbildung nicht, eigentlich braucht man schon etwas Hintergrund, um da auf die Schnelle drauf kommen zu koenen. In der Antwort wurde Dir ja schon der Hinweis auf Rotationsmatrizen gegeben. Um einen Vektor in 2D um einen Winkel Alpha zu rotieren, wendet man die Matrix

    [  cos(alpha) sin(alpha) ]
    [ -sin(alpha) cos(alpha) ]
    

    auf den Vektor an. Wenn alpha=90 Grad ist, steht da also die Matrix:

    [  0 1 ]
    [ -1 0 ]
    

    Durch Anwendung auf den Vektor (x,y) erhaelt man dann

    [  0 1 ] [x] = [ y]
    [ -1 0 ] [y]   [-x]
    


  • Man muss nichts über Rotationsmatrizen wissen, um auf sowas zu kommen. Da reicht eine Skizze.



  • @Gregor: Es reicht das Wissen über orthogonalität aus.

    sei v=(x1,y1) der startvektor und w=(x2,y2) der um 90° gedrehte Dann muss nach der Rotation gelten:
    v orthogonal zu w
    <=> v^Tw = 0
    <=> x1*x2+y1*y2=0
    <=> x1*x2= -y1*y2

    und nun löst man durch Vergleich der Argumente.

    //edit seit wann frisst meine tastatur auch noch Minuszeichen? 😞



  • Gregor schrieb:

    [  cos(alpha) sin(alpha) ]
    [ -sin(alpha) cos(alpha) ]
    

    Das Minus packt man normalerweise zum anderen Sinus, es sei denn, da sind in der Mitte Nullen dazwischen (also Rotation in der X/Z-Ebene um die Y-Achse). Spätestens in 3D ist das wichtig, damit man die Rechte-Hand-Regel konsistent anwenden kann. 🙂



  • krümelkacker schrieb:

    Gregor schrieb:

    [  cos(alpha) sin(alpha) ]
    [ -sin(alpha) cos(alpha) ]
    

    Das Minus packt man normalerweise zum anderen Sinus, es sei denn, da sind in der Mitte Nullen dazwischen (also Rotation in der X/Z-Ebene um die Y-Achse). Spätestens in 3D ist das wichtig, damit man die Rechte-Hand-Regel konsistent anwenden kann. 🙂

    Oh, mal gucken, ob ich irgendeine Klugscheißerantwort finde, mit der ich mich da rausreden kann... 🤡

    Ah, ja... Der Threadersteller hat die Drehrichtung in seiner Frage eigentlich eindeutig vorgegeben:

    alterbro schrieb:

    Ich hab einen Vektor (0.7,0.7)
    und möchte diesen um 90 Grad drehen, um ihn in (0.7,-0,7) zu verwandeln

    😉

    Ansonsten: Ok, geht vielleicht auch einfacher. Ich persönlich finde allerdings den Zugang über Rotationsmatrizen am naheliegendsten.


Log in to reply