OpenGL frage zu Homogeneous coordinates und zur Identity matrix
-
Hallo,
ich bingrade bei OpenGL zu lernen. Dabei lese ich dieses Tutorial http://www.opengl-tutorial.org
und ich bin grade hier angekommen:
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/Ich hab jetzt bloß noch nicht verstanden mit den Homogeneous coordinates also (x,y,z,w). Was gibt das "w" jetzt an auf der Seite stand ja als Beschreibung w==1 zwischen "position in space" und w==0 " direction" t.
Direction klar auf Deutsch so viel wie Richtung. Aber was ist denn genau damit gemeint kann mir das jemand näher erklären?Dann eine frage zu "Identity matrix" was bringt die. Da steht ja "multiplaying A by 1.0 gives A". Toll aber wofür nutzt man die? Einfach als Platzhalter oder wie darf ich das verstehen.
Das waren meine Fragen eigentlich auch schon hoffe hier kann mir das jemand das kurz erläutern.
-
Ja, gewissermaßen als Platzhalter.
In der Regel wird jedes Objekt mit einer eigenen Matrix multipliziert beim Rendern.
Anfangs ist diese jedoch die Identity-Matrix, dabei passiert also nichts.Edit: Zu deiner zweiten Frage.
Das erste ist ein Punkt. Punkte können verschoben, rotiert und skaliert werden.
Das zweite ist ein Vektor. Da Vektoren nur rotiert und skaliert werden können, haben sie w == 0. Deswegen bringen Bewegungsinformationen bei Vektoren nichts.
-
Danke.
Jetzt musst mir nur noch jemand das mit den Homogeneous coordinates(x,y,z,w) erläutern und ich kann weiter lesen
-
Siehe meinen Edit.
-
Ok wenn ich wenn ich versuche einen Vektor zu verschieben verschiebt sich dann das ganze Objekt oder passiert gar nichts?
-
Die Verschiebung eines Vektors ist nicht definiert.
Deswegen passiert da gar nichts, wenn du (aus Versehen oder absichtlich) versuchst ihn zu verschieben.
-
Ok.
Vielen Dank!
-
-
Hi,
eine homogene Transformationsmatrix kann man (u.a) dafür verwenden, um Vertexpositionen und Normalenvektoren mit der gleichen Matrix zu transformieren. Bei Normalenvektoren möchtest du für gewöhnlich nicht, dass der Translationsanteil angwendet wird. Schau die mal an wie eine homogene Transformationmatrix aufgebaut ist (mit einer 3x3 Blockmatrix R oben rechts (meist nur Rotationen), einem Vektor t links zur Translation und 0 0 0 1 in der letzten Zeile) und multiplizier mal mit einem Vektor w = 0 und w = 1.
-
Das funktioniert nur in einigen (wenn auch nicht gerade unüblichen) Spezialfällen, nicht im Allgemeinen. Versuch das z.B. mal mit einer Matrix, die eine nicht uniforme Skalierung beschreibt und deine Normalen sind kaputt...