7 Stimmen

Computergrafik: Mathematik zum Code

Beginnen wir mit meinem mathematischen Hintergrund. Ich habe die Fächer Kalkül I - IV und Differentialgleichungen belegt. Ich habe im ersten Semester einen Computergrafik-Kurs belegt, in dem wir unsere eigene Grafik-Pipeline einschließlich Schattierung mit Phong ohne Grafik-API implementiert haben.

Ich belege in diesem Semester einen Kurs für fortgeschrittene Computergrafik, und wenn ich die Mathematik lese, die darin vorkommt, wird mir ganz anders. Dieser Kurs ist im Grunde ein Kurs zur Bildsynthese. In unserem ersten Projekt werden wir einen Raytracer bauen und von da an auf ihn aufbauen.

Wenn ich mich über fortgeschrittene Computergrafik informiere, lese ich in der Regel einen Haufen Mathe. Ich weiß, dass Computergrafik sehr mathematisch ist, aber ich habe Probleme, wenn ich versuche, herauszufinden, wie genau ich die Mathematik in Code umsetzen soll. Ich muss das wirklich in den Griff bekommen, um in CG zu glänzen.

Zum Beispiel dieser Artikel von GPU Gems: http://http.developer.nvidia.com/GPUGems/gpugems_ch01.html Es gibt einen Haufen Mathe, aber ich habe keine Ahnung, wo ich anfangen soll, die Mathematik zu implementieren, wenn ich das möchte.

Gibt es also etwas, das ich übersehe? Soll ich mir die Mathematik ansehen und den Code ableiten können? Gibt es Anleitungen/Bücher, die mir helfen können zu verstehen, was ich tun muss?

3 Stimmen

Wie viel Lineare Algebra haben Sie belegt? Der größte Teil der Computergrafik ist angewandte lineare Algebra.

0 Stimmen

Ich habe auch lineare Algebra belegt. Ich habe vergessen, das zu erwähnen. Ich habe nie Probleme mit der linearen Algebra, sondern nur mit den komplexen Integralen und wie man sie in Code umsetzt.

1 Stimmen

Ich sehe in diesem Artikel keine komplexen Integrale. Mit welchem Teil haben Sie Probleme?

1voto

Michael J. Barber Punkte 23764

Die Programmierung für die Art von Mathematik, die Sie im Artikel über GPU-Gems sehen, würde im Allgemeinen unter numerische Analyse fallen. Die mehr angewandte Seite der numerischen Analyse würde in einem Kurs oder Buch über numerische Methoden oder wissenschaftliche Programmierung behandelt werden. Ich würde vorschlagen, mit dem Wikipedia-Artikel über numerische Analyse und einige der verlinkten Artikel zu lesen. Sobald Sie die Namen einiger relevanter Methoden kennen, ist Beispielcode leicht zu finden.

Ein Tipp: Ein großer Teil der Implementierung von Ableitungen und Integralen besteht darin, zu lernen, wie man mit Grenzwerten (im mathematischen Sinne) in seinen Programmen umgeht. Oft ist das nicht explizit angegeben.

0voto

phkahler Punkte 5602

In diesem Artikel werden FFTs bzw. inverse FFTs verwendet, um ein sich bewegendes Höhenfeld zu erzeugen. Informieren Sie sich über FFTs. Um eine 2D-FFT zu erstellen, führen Sie zunächst eine 1d-FFT für die Zeilen und dann für die Spalten durch. Sobald Sie das Höhenfeld haben, erhalten Sie die partiellen Ableitungen wahrscheinlich, indem Sie die Differenz benachbarter Höhen entlang der x- oder y-Achse nehmen, je nachdem, um welchen Teil es sich handelt. Auf den ersten Blick sehe ich hier keine Integrale, aber sie kommen in einigen grafischen Arbeiten vor, und es gibt Methoden zu ihrer Auswertung.

Ich kann auch empfehlen, sich im ompf-Forum umzuschauen: http://ompf.org/forum/

0 Stimmen

Nach nochmaliger Betrachtung gibt es keine Integrale. Ich habe immer noch Probleme, wenn ich versuche, es in Code zu übersetzen. Ich werde mir die Website ansehen.

0voto

Ron Warholic Punkte 9894

Ein Tipp, der über "mehr Mathe lernen und üben" hinausgeht, ist, dass es für einige mathematische Konstrukte im Allgemeinen ein analoges Konstrukt im Code gibt, das vielleicht nur nicht offensichtlich ist.

Integrale (und Summen) werden oft als Schleifen im Code oder als Summen über Frames realisiert (in der Grafik ist dies oft der Fall). Ableitungen und Teilwerte sind Änderungen zwischen Werten, die sich typischerweise als Deltas über Frames oder zwischen diskreten Elementen wie Pixeln manifestieren.

Diese Regeln gelten zwar nicht zu 100 %, aber wenn man anfängt, die schwierigeren mathematischen Elemente im Hinblick auf den von ihnen erzeugten Code zu betrachten, wird es leichter, sie zu verinnerlichen. Es ist wichtig, von einem soliden Fundament aus zu arbeiten, also stellen Sie sicher, dass Sie die Grundlagen beherrschen und der Rest kommt mit Erfahrung und Übung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X