Registriert: Do Jul 23, 2009 04:33 Beiträge: 157
Programmiersprache: Turbo Delphi Pro
Hey ho, also Matheunterricht ist bei mir schon ein paar Jahre her, aber ich bemühe mich durchzusteigen. Habe mir daher jetzt mal live die aktuelle Matrix per Write() ausgegeben, um zu lernen.
Also die ersten drei Vektoren stellen wohl die Richtungsvektoren der X,Y und Z Achse da, zuzüglich einer Verschiebung W. Aber was soll der letzte Vektor sein? Ist das sozusagen der Ortsvektor vom Ursprung oder so? Aber ich habe festgestellt, dass weder glTranslate, glRotate noch glScale ihn beeinflussen, er bleibt bei mir immer bei 0,0,0,1, wobei mir allerdings auch schleierhaft ist was die 1 bedeutet. Im Wiki steht leider auch nur dass es die "Position" ist, aber wie man diese ändert bzw. wie sich das auswirken würde hab ich nicht gefunden.
Nicht dass ich das jetzt brauchen würde, aber interessieren täte es mich halt schon.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen. (Koreanisches Sprichwort)
Das was ich als 0,0,0,1 las, waren in Wahrheit die w-Anteile besagter Vektoren.
Exakt. Die brauchst du z.B. für Projektion. Dann ist das nämlich zum Beispiel plötzlich "0 0 -1 0". Auf diese Weise stellt man eine Division (Projektion = Division durch z, einfach nur Strahlensatz) dar, was ja mit einer Matrix eigentlich nicht geht. Statt zu dividieren multipliziert man einfach den künstlichen "Nenner" in der w-Komponente. In der Pipeline gibt es dann den Schritt "Perspective Division". Dort wird dann einfach durch die w-Komponente geteilt und man erhält den korrekten Wert.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.