OpenGL Mathefrage
-
Hi,
ich möchte in meinem OpenGL Programm alles selber machen zum lernen und zu verstehen. Nun bisher habe ich nur solche funktionen benutzt glOrtho, gluPerspective usw. doch nun soll ende damit sein
Jetzt habe ich im Netz gesucht und was gefunden:
void matrix::createPerspective (float fov, float aspect, float fnear, float ffar) { identity (); float top = fnear * static_cast<float>(tan(fov * 0.0087266462599716477777777777777778f)); float bottom = -top; float left = bottom * aspect; float right = top * aspect; this->_11 = (2.0f * fnear) / (right - left); this->_31 = (right + left) / (right - left); this->_22 = (2.0f * fnear) / (top - bottom); this->_32 = (top + bottom) / (top - bottom); this->_33 = -(ffar + fnear) / ( ffar - fnear); this->_43 = -(2.0f * ffar * fnear) / (ffar - fnear); this->_34 = -1.0f; this->_44 = 0.0f; }
Ich versteh die berechnung nicht? kann sie mir jemand erklären?
-
Wie das genau funktioniert kann ich Dir auch nicht sagen. Aber wenn Du nach homogene Koordinaten und Transformationsmatrizen googlest sollte einiges zu finden sein. Allerdings begreife ich nicht ganz, warum Du die Hilfsfunktionen nicht verwenden willst. Sie tun was Du willst und Du mußt Dich nicht mit allem möglichen Kleinkram rumärgern...