3d berechnungen / matrix
-
benutzername schrieb:
Woher hast Du diese Matrix?
Sieht die Matrix ungefaehr so aus:1 0 0 0
0 a b c
0 d e f
0 g h idie matrix ist eher andersrum also
a b c 0
d e f 0
g h i 0
0 0 0 1aber ich nehme an, die berechnung erfolgt in ähnlicher weise?
Erklaer mal was Du machen willst!
ich versuche daten aus einem 3DS file auszulesen. und da sind bestimmte koordinaten abhängig von matritzen, ich möchte allerdings (weil ich es nicht einfach nur an opengl / directx weiterreichen will) die matrix wegbekommen und nur noch die absoluten koordinaten haben.
-
Also: Hier dann nochmal die Berechnung der Multiplikation:
a b c 0 w a*w + b*x + c*y + 0*z a*w + b*x + c*y d e f 0 x d*w + e*x + f*y + 0*z d*w + e*x + f*y g h i 0 * y = g*w + h*x + i*y + 0*z = g*w + h*x + i*y 0 0 0 1 z 0*w + 0*x + 0*y + 1*z z
Ich vermute, da in der letzten Komponente eine 1 steht (d.h. bei der Matrizenmultiplikation diese Komponente nicht veraendert wird), dass die Daten in einer Metrik angegeben sind, in der die letzte Komponente die Zeit ist.
x y z t
Wenn Du nun nur die 3d-Koordinaten haben willst kannst Du nach der Berechnung einfach die letzte Komponente wegstreichen. Wenn JEDE Matrix wie die Obige aussieht kannst Du auch vor der Berechnung die letzte Zeile und die letzte Spalte wegstreichen.
Wichtig ist nur, dass Du soviele Spalten hast, wie der Vektor Komponenten hat, da Du sonst nicht weisst, was mit was multipliziert werden muss.
-
danke, ich werds mal ausprobieren
-
es klappt, allerdings nicht immer. ich glaube das liegt daran dass da mal so seltsame matrizen wie
7.5, 0.0, 0.0, 0.0 0.0, -7.5, 6.083982415168825E-8, 2.6999998092651363 0.0, -9.125973622753238E-8, -5.0, 5.0 0.0, 0.0, 0.0, 1.0
drin vorkommen. ich habe mir erst mal nicht anders zu helfen gewußt als die letzte spalte mit in die rechnung aufzunehmen und jeweils dazuzuaddieren. das ergebnis sieht aber immer noch seltsam aus
-
Diese Matrix
7.5, 0.0, 0.0, 0.0 0.0, -7.5, 6.083982415168825E-8, 2.6999998092651363 0.0, -9.125973622753238E-8, -5.0, 5.0 0.0, 0.0, 0.0, 1.0
Beinhaltet mehr als Drehung, Streckung und Verschiebung, da sie nicht die schon erwaehnte Form hat! Mit dieser Matrix wird die Zeit der 4d-Raumzeitpunkte wichtig, und ich glaube das macht bei Dir keinen Sinn, oder?
ich habe mir erst mal nicht anders zu helfen gewußt als die letzte spalte mit in die rechnung aufzunehmen und jeweils dazuzuaddieren. das ergebnis sieht aber immer noch seltsam aus
Verstehe ich nicht! Hier nochmal, was ich vorhin versucht habe zu erklaeren:
a b c 0 w a*w + b*x + c*y + 0*42 a*w + b*x + c*y d e f 0 x d*w + e*x + f*y + 0*42 d*w + e*x + f*y g h i 0 * y = g*w + h*x + i*y + 0*42 = g*w + h*x + i*y 0 0 0 1 42 0*w + 0*x + 0*y + 1*42 42
Die 42 soll anzeigen, dass es egal ist, was da steht.
Die neue Punkt ist also:a*w + b*x + c*y d*w + e*x + f*y g*w + h*x + i*y
Also ein 3d-Vektor. Ist allerding die Matrix nicht von obiger Form steht in den raeumlichen Komponenten noch die Zeit mit drin. Das heisst: Wenn Du JETZT die Multiplikation durchfuehrst kommt ein anderer Punkt raus, als in 2 Minuten. Du wirst zugeben, das dass (fuer Nicht-Physiker) keinen Sinn macht, oder?
-
deshalb solltest du es vielleicht nicht physikalisch erklären...sondern eher mathematisch
wieso und auch weshalb 4D matrizen genommen werden in der 3d programmierung...und das hat ziemlich wenig mit der zeit in dem sinne zu tun
tschöö
tt
PS: stichwort "homogene koordinaten"
-
TheTester schrieb:
wieso und auch weshalb 4D matrizen genommen werden in der 3d programmierung
Das weiss ich auch nicht!! Aber ich dachte er hat eine Datei, vor der er nicht weiss, was und wie da drin steht sodern nur, dass es was mit 3d zu tun hat.
Entschuldigt, wenn ich Stuss geschrieben habe.TheTester schrieb:
stichwort "homogene koordinaten"
Kann Dir nicht folgen.
-
google doch einfach mal danach.
-
1:0 fuer Dich.
-
benutzername
************glückstreffer