Translation und Rotation aus Matrix Extrahieren (DirectX)



  • Hi!

    um die Positions änderung eines rotierenden teils zu verändern, Multipliziere ich einige Rotationsmatrizen mit Translationsmatritzen.

    Wie kann ich aus dieser endMatrix die Position (x,y,z) und die Rotationen (x,y,z) entnehmen?
    um sie anderweilig zu nutzen.



  • Am besten gar nicht. Wie genau willst du diese denn "anderwertig" nutzen?



  • Position: Multipliziere mit (0 0 0 1). Was dabei herauskommt ist die letzte Spalte der Matrix.

    Rotation: Benutze 3x3 Teil der 4x4 Matrix.



  • danke
    ich werds austesten obs klappt.

    naja da ich mitlerweile weiß, das mein virtueler 3D Arm nicht stückweise 2D zerlegt werden kann um positionen zu berechnen, (langes Gespräch in der uni)
    mache ich das jetzt über matrizen. ich nehm eine Translationsmatrix für einen Armteil, multipliziere ihn mit den Rotationsmatrizen, und raus kommt eine Matrix, die genau das macht, was ich wochenlang versucht habe mit sin/cos zu berechnen.

    die Matrix transformiert und rotiert meine Teile so wie ich das brauche.

    Ich brauch jetzt aber trozdem die Positionen der einzelnen Servo gelenke, da ich zusätzlich kollisionsberechnungen machen will.



  • wie genau mach ich das mit dem mit 0,0,0,1 multiplizieren?

    ich würd gern die werte als pos[3] speichern. bzw mit zwei punkten geraden machen.

    edit:

    irgendwie muss man in DirectX doch positionen nutzen können oder?
    wie krieg ich denn nach einigen translationen und rotationen die position eines objektes herraus?

    mir würd ja schon reichen welchen header ich includen muss um nach funktionen zu suchen. pls help



  • Um die translation zu extrahieren nehme für:
    X = 1 Spalte, letze Zeile
    Y = 2 Spalte, letze Zeile
    Z = 3 Spalte, letze Zeile



  • danke!

    ich scheiter nur daran wie ich auf die einzelnen matrix elemente zugreifen kann.
    matall[0][3]
    geht leider nicht 😞

    edit:

    hat sich erledigt. laut manual sinds structs.
    daher:
    matall._31; ect...

    thx!


Anmelden zum Antworten