Der Schlüssel, damit ein Finite-Differenzen-Schema auf einer unregelmäßigen Geometrie funktioniert, besteht darin, eine 'Form'-Matrix mit Werten zu haben, die Punkte außerhalb, innerhalb und an der Grenze der Domäne bezeichnen. Angenommen, wir hatten eine Form wie diese:
000000001000000110000012100001221000122210012221001221000121000011000001000000000000
Die wahre Domäne (in der sich alle Einträge ungleich Null der Matrix befinden) bildet ein nach unten gerichtetes Dreieck. Die Einsen stellen Punkte an der Grenze dar, während die Zweigen innere Punkte darstellen (normalerweise Unbekannte). Wir können Knotennummern wie folgt zuweisen:
00000000- 1000000- 1- 100000- 11- 10000- 127- 1000- 13811- -100- -14912- -100- -1510- -1000- -16- -10000- -1- -100000- -1000000000000
Hier repräsentieren -1 die Grenzorte. Anschließend können Sie ein Finite-Differenzen-Schema für alle Einträge in der Matrix ausführen. Verwenden Sie jedoch eine if-Anweisung, um Ihr Schema nur auf den inneren Knoten (von 1 bis 12) auszuführen. Dieser Ansatz ist nicht der effizienteste Weg, aber er erledigt den Job ... Wenn Sie sich den Speicher leisten können, ist es möglicherweise sinnvoll, die (i, j) -Einträge aller inneren Knoten zu speichern und auszuführen eine for-Schleife nur auf diesen Knoten.
Um die Geometrie direkt zu erstellen, haben Sie zwei Möglichkeiten:
1. Erstellen Sie manuell ein Schwarzweißbild und importieren Sie es in Ihr Programm (am einfachsten zu implementieren, aber unmöglich, Ihre räumliche Auflösung dx oder dy zu verfeinern).
2. Schreiben Sie Code, der diskrete Darstellungen der gewünschten Grundformen für jede von Ihnen gewählte räumliche Auflösung erstellt (schwieriger zu implementieren, aber robuster für allgemeine Finite-Differenzen-Schemata mit räumlicher Auflösung dx oder dy).
Wenn Sie mehr darüber erfahren möchten, sollten Sie sich diese Videos
ansehen : NPTEL-Computergrafikkurs, Video 2 (Rastergrafiken)
NPTEL-Computergrafikkurs, Video 3 (Rastergrafiken, Fortsetzung)
Schauen Sie sich diese an und Lassen Sie mich wissen, ob dies Ihre Frage beantwortet.