Aus einer Normale eine 4x4 Matrix generieren



  • Hallo,

    kann mir jemand sagen wie man aus einer Normale eine 4x4 Matrix machen kann?



  • normal.x,normal.y,normal.z,0.f,
    normal.x,normal.y,normal.z,0.f,
    normal.x,normal.y,normal.z,0.f,
    normal.x,normal.y,normal.z,0.f
    

    tat auch garnicht weh 😉



  • ich bin für

    [(normal) (x) (1.0)] [(normal) (x) (1.0)]^t
    

    aber der op will sicher

    forward.x right.x normal.x 0
    forward.y right.y normal.y 0
    forward.z right.z normal.z 0
    0         0       0        1
    


  • LukasBanana schrieb:

    kann mir jemand sagen wie man aus einer Normale eine 4x4 Matrix machen kann?

    Wie Du anhand der Antworten merkst, ist diese Frage etwas ungeschickt gestellt. Es gibt tausende Möglichkeiten aus einem Vektor eine Matrix zu erzeuge. Davon sind vielleicht die meisten nicht besonders sinnvoll, aber es gibt sicher mindestens eine Hand voll sinnvolle Möglichkeiten.

    Welche Aufgabe möchtest Du mit der 4x4-Matrix denn erledigen?



  • Also ich möchte daraus eine Ebene machen und dauraus dann eine Matrix um alleine die Rotation festzuhalten.
    Ich benötige also eine Matrix Rotation die auf einer Normale bzw. einer Richtung entsteht.
    Ich glaube, dass dazu erst die Normale brauche, oder?! Naja ich kenne mich da eben nicht sogut aus.



  • LukasBanana schrieb:

    Also ich möchte daraus eine Ebene machen und dauraus dann eine Matrix um alleine die Rotation festzuhalten.
    Ich benötige also eine Matrix Rotation die auf einer Normale bzw. einer Richtung entsteht.
    Ich glaube, dass dazu erst die Normale brauche, oder?! Naja ich kenne mich da eben nicht sogut aus.

    Die Information reicht nicht aus, um eine Matrix eindeutig zu bestimmen. Was soll die Rotationsmatrix wohin rotieren?



  • Ich will damit später Vertices (also 3D Koordinaten) rotieren.
    Ich habe also ein Dreieck dessen ich eine Normale entnehme. Jenachdem wie dieses Dreieck im Raum liegt und die daraus resultierende Normale aussieht, sollen dann einige Vertices rotiert werden.
    Die Lage des Dreiecks soll die Rotation angeben.
    Ich hoffe das reich an Informationen.



  • LukasBanana schrieb:

    Ich will damit später Vertices (also 3D Koordinaten) rotieren.
    Ich habe also ein Dreieck dessen ich eine Normale entnehme. Jenachdem wie dieses Dreieck im Raum liegt und die daraus resultierende Normale aussieht, sollen dann einige Vertices rotiert werden.
    Die Lage des Dreiecks soll die Rotation angeben.
    Ich hoffe das reich an Informationen.

    Nein, das reicht immer noch nicht. Zunächst hat eine Rotation drei Freiheitsgrade, du hast aber durch einen Normalenvektor nur zwei Einschränkungen, es bleibt also immer noch ein Freiheitsgrad übrig.
    Grundsätzlicher: Es ist immer noch nicht klar, was genau wohin rotiert werden soll. Soll die Normale die Achse der Rotation sein, und du gibst noch einen Winkel vor? Oder sollen Punkte so rotiert werden, dass sie in der Ebene des Dreiecks liegen?



  • Sie sollen so rotiert werden, dass sie in der Ebene des Dreiecks liegen.
    Das währe am geeignetsten. Notfalls kann man ja auch die Vektoren AB, AC und die Normale des Dreiecks ABC nehmen.



  • LukasBanana schrieb:

    Sie sollen so rotiert werden, dass sie in der Ebene des Dreiecks liegen.
    Das währe am geeignetsten. Notfalls kann man ja auch die Vektoren AB, AC und die Normale des Dreiecks ABC nehmen.

    r.x f.x norm.x  0
    r.y f.y norm.y  0
    r.z f.z norm.z  0
    0   0   0       1
    

    transformiert punkte aus der x-y-ebene in die ebene, die von den orthogonalen vektoren r, f aufgespannt wird. n ist die normale auf r, f. |r| = |f| = |norm| = 1


Anmelden zum Antworten