Kunci untuk membuat skema beda hingga bekerja pada geometri tidak beraturan adalah memiliki matriks 'bentuk' dengan nilai yang menunjukkan titik di luar, di dalam, dan pada batas domain. Katakanlah kita memiliki bentuk seperti ini:
000000001000000110000012100001221000122210012221001221000121000011000001000000000000
Domain sebenarnya (di mana semua entri non-nol dari matriks) membentuk segitiga yang mengarah ke bawah. Angka 1 mewakili titik pada batas, sedangkan angka 2 mewakili titik interior (tidak dikenal, biasanya). Kita dapat menetapkan nomor simpul sebagai berikut:
00000000- 1000000- 1- 100000- 11- 10000- 127- 1000- 13811- 100- 14912- 100- 1510- 1000- 16- 10000- 1- 100000- 1000000000000
Di sini, -1 mewakili lokasi batas. Kemudian, Anda dapat menjalankan skema beda hingga atas semua entri dalam matriks, tetapi gunakan pernyataan if untuk mengeksekusi skema Anda hanya pada node interior (dari 1 hingga 12). Pendekatan ini bukan cara yang paling efisien untuk melakukannya, tetapi ini akan menyelesaikan pekerjaan ... jika Anda mampu menggunakan memori, mungkin lebih baik untuk menyimpan entri (i, j) dari semua node interior, dan menjalankan a for loop hanya pada node tersebut.
Untuk membuat geometri secara langsung, Anda dapat melakukan salah satu dari dua hal:
1. Buat gambar hitam putih secara manual, dan impor ke program Anda (paling mudah untuk diterapkan, tetapi tidak mungkin untuk memperbaiki resolusi spasial Anda, dx atau dy).
2. Tulis kode yang akan membuat representasi diskrit dari bentuk dasar yang Anda inginkan untuk resolusi spasial apa pun yang Anda pilih (lebih sulit untuk diterapkan, tetapi lebih kuat untuk skema perbedaan hingga umum dari setiap resolusi spasial dx atau dy).
Jika Anda ingin mempelajari lebih lanjut tentang cara melakukan ini, Anda mungkin ingin mempertimbangkan untuk menonton video ini:
Kursus Grafik Komputer NPTEL, Video 2 (Grafik Raster)
Kursus Grafik Komputer NPTEL, Video 3 (Grafik Raster, lanjutan)
Lihat, dan beri tahu saya jika ini menjawab pertanyaan Anda.