Fischauge
-
Hallo zusammen,
ich habe in der FH die Aufgabe bekommen die Fischaugenprojektion zu programmieren.
Als Programmiersprache ist C zu benutzen und die WinAPI (d.h "nur" die Befehle LineTo und MoveTo).Als Beispiel hat uns der Prof. sein Programm gezeigt. Hier sitzt man in einem dreidimensionalem Raum und kann den gewünschten Blickwinkel angeben, der angezeigt werden soll.
Nun bin ich bereits soweit gekommen, dass ich einen dreidimensionalen Raum (je 2 for-Scheifen für eine Wand --> 12 for-Schleifen gesamt (inklusive Hinterwand)) programmiert habe.
Ich bin mir aber nicht sicher, ob die Projektion auf den Bildschirm korrekt ist, weil ich die dreidimensionalen Vektoren jeweils duch ihre z-Komponente Teile und mit einem konstanten Faktor d multipliziere. Irgendwie habe ich das mit einer Projektionsmatrix nicht geschafft.Ich bin dann vor einiger Zeit beim Prof. gewesen und habe mir nochmal sein Programm angeguckt.
Er meinte dann, dass die Vektoren zu den einzelnen Punkten normiert werden müssen und die Länge neu berechnet werden müsste und danach die Vektoren mit dieser Länge multipliziert werden müssten. Er hat dabei einen Ansatz mit dem tangens gewählt, dem ich aber nicht folgen konnte und auch nicht mitschreiben konnte, weil er nur sehr kurz an der Tafel stand.
Weiterhin hat der dann noch etwas von einer Differentialgleichung erzählt, um auch ein wenig Mathematik in das Programm zu bringen. In diesem Zusammenhang hat er dann etwas von Ringgebieten auf einer Kugel erzählt. Aber ich habe auch hier absolut keinen Ansatz diese DGL aufzustellen, geschweigedenn weiss ich wozu man sie hier überhaupt benötigt. Ist sie vielleicht zur Abbildung einer Kugel auf eine Ebene nötig?Also nun endlich zu meinen Fragen:
1. Ist meine Lösung mit der Projektion so richtig, oder lässt es sich geschickter mit einer Projektionsmatrix erledigen, bzw. wird es sonst später zu Problemen kommen? Wenn ja, wie sieht diese Projektionsmatrix aus?
2. Welche Formel muss auf die einzelnen Vektoren angewendet werden, so dass die Fischaugenprojektion dargestellt wird?
3. Wie sieht die mögliche DGL aus, die aufgestellt werden muss und wozu ist diese genau nötig?
PS.: Natürlich habe ich bereits nach Antworten im Internet gefunden, aber das Material zu Fischauge ist sehr spärlich und meisst auch nicht das richtige.
Danke schonmal für die Antworten.