Vektorrotation v=(x,y,z,w), Bedeutung von "w" für v'=R*v



  • hallo.

    ich bin grad verwirrt. wenn ich einen vektor transformieren will, z.b. rotieren, dann brauch ich doch die 4. coordinate "w" nur als dummy, oder? bei directx gibts aber drei verschiedene funktionen zum transformieren:

    D3DXVec3Transform
    D3DXVec3TransformCoord
    D3DXVec3TransformNormal
    

    wobei die erste vier coordinaten will, die anderen drei.
    Meiner Meinung nach ist eine Rotation sowieso orthogonal (die länge des vektors ändert sich nicht), also was soll das alles?

    Und was mache ich mit dem "w"? ist irgendwie nirgends erklärt (hab grad DX-docu gewälzt).

    danke für jeden tip!



  • Gehirnmann schrieb:

    Meiner Meinung nach ist eine Rotation sowieso orthogonal (die länge des vektors ändert sich nicht), also was soll das alles? [...] danke für jeden tip!

    Eine Rptation ist ein Spezialfall einer Transformation. So als Tip.

    Bye, TGGC (NP Intelligenz)



  • hi

    Die w-Komponente (normalerweise w = 1) dient der Translation von Objekten. Für die Rotation ist sie also nicht weiter wichtig.

    v' = v * M (Vektoren werden in DX von links an eine Matrix multipliziert)

    sieht so aus:

    v'.x = v.x * m11 + v.y * m21 + v.z * m31 + v.w * m41
    v'.y = v.x * m12 + v.y * m22 + v.z * m32 + v.w * m42
    v'.z = v.x * m13 + v.y * m23 + v.z * m33 + v.w * m43
    v'.w = v.x * m14 + v.y * m24 + v.z * m34 + v.w * m44

    Matrix M hat die Form:
    m11 m12 m13 m14
    m21 m22 m23 m24
    m31 m32 m33 m34
    m41 m42 m43 m44

    m41, m42, m43 halten also die x, y und z Werte, um die ein Objekt nach der Transformation durch die obere linke 3*3 matrix noch verschoben wird.

    hoffe trägt zur Klärung bei!!



  • > Eine Rptation ist ein Spezialfall einer Transformation

    was ist den an einer Rotation so speziell?

    > Vektoren werden in DX von links an eine Matrix multipliziert

    irgendwo hört der spaß auch wieder auf...

    > dann brauch ich doch die 4. coordinate "w" nur als dummy, oder?

    w ist einfach die Homogene Koordinate um Translationen mithilfe von Matrizen beschreiben zu können

    > D3DXVec3Transform

    Transforms vector (x, y, z, 1) by a given matrix.
    (Erwartet einen 4D Vektor/Punkt - Transformiert mit der Übergebenen Matrix - liefert Ergebnis zurück)

    > D3DXVec3TransformCoord

    Transforms a 3-D vector by a given matrix, projecting the result back into w = 1.
    (Transformiert einen 3D Vektor mit einer Gegebenen Matrix - liefert Ergebnis zurück - damit läßt sich nur schwer eine Translation im R^3 beschreiben - spart aber Rechenoperationen, wenn man keine Verschiebung hat)

    > D3DXVec3TransformNormal

    This function transforms the vector normal (x, y, z, 0) of the vector, pV, by the matrix, pM.
    (Für Normalen spielt eine Translation keine wichtige Rolle - daher könnte man sich diese praktisch sparren -> weniger Rechenschritte -> schneller)

    Kenn mich mit DX net so besonders gut aus - vielleicht habe ich ja etwas falsch interpretiert - aber so würde es sinn ergeben...



  • w kann auch als Skalierungsfaktor für die Translation missbraucht werden:

    Nehmen wir folgende Transformationsmatrix (die einen 2D Punkt) transformiert an:

    \left( \begin{array}{111} 0 & -1 & 5 \\ 1 & 0 & 2,5 \\ 0 & 0 & w \\ \end{array} \right)

    Diese Matrix Dreht einen Punkt um 90° und verschiebt ihn um 5*w und 2.5*w

    Winkel verändern sich beim Skalieren nicht - nur die Längen von Srecken

    Hast du z. B. einen Würfel und willst diesen nur "halb so groß" darstellen gibst du für w einfach 1/2 an...

    Das dumme ist das immer alle drei Achsen skaliert werden und man sich nicht nur auf eine einzige Beschränken kann



  • Vertexwahn schrieb:

    Eine Rptation ist ein Spezialfall einer Transformation

    was ist den an einer Rotation so speziell?

    a) Es existiert ein Punkt P der auf sich selbst abgebildet wird
    b) Sei A' der Bildpunkt von A und B' der Bildpunkt von B, sowie d der Abstand von A nach B, so ist der Abstand von A' nach B' d
    c) Sei A' der Bildpunkt von A und B' der Bildpunkt von B und C' der Bildpunkt von C, sowie w der von ABC eingeschlossene Winkel, so ist der von ABC eingeschlossene Winkel w

    Bye, TGGC (NP Intelligenz)



  • > a) Es existiert ein Punkt P der auf sich selbst abgebildet wird

    Es existiert sogar eine Gerade, die auf sich selbst abgebildet wird (oh!)

    vielleicht kennt hier ja der ein oder andere das Fußballbeispiel - wenn man einen Fußball rotiert (um x,y,z Achse), dann gibt es immer zwei Punkte die nach der Drehung an der selben stelle befinden wie vor der Drehung



  • TGGC schrieb:

    sowie w der von ABC eingeschlossene Winkel, so ist der von ABC eingeschlossene Winkel w

    ROFL 😃

    Ach nee!?!? 🤡 👍


Anmelden zum Antworten