Jika Anda tahu apa itu ray casting, maka yang perlu Anda lakukan hanyalah hard-code-nya. Ini tidak terlalu rumit selama Anda memiliki koordinat untuk setiap titik.
Pertama, buat objek yang memancarkan cahaya. Tempatkan cahaya Anda di koordinat x, y.
#include <math.h>
int i = 0;
if ( sqrt( abs( light.x - vertex.x )^2 + abs( light.y - vertex.y )^2 ) <= light.radius)
{
lightOccludingVertices[i] = vertex;
i++;
}
//If two or more vertices are both a member of an individual wall,
//illuminate the triangular area between the light, the furthest
//vertex on the x-axis, and the furthest vertex on the y-axis
Ini tidak dijamin berfungsi untuk poligon cekung, tetapi harus berfungsi dengan baik untuk setiap poligon cembung.
Ini akan berfungsi jika benda yang tersumbat (dinding, karakter, pemakan orang terbang ungu) dilukis ke layar setelah menerapkan pencahayaan. Kalau tidak, separuh dinding akan tampak lebih terang secara signifikan daripada separuh lainnya. Jika titik cahaya Anda sama dari dua pasang simpul pada dinding yang sama (tepat setengah dari ketinggian dinding Anda), terapkan segitiga ke dua simpul terdekat, daripada dua yang lebih jauh.
Saya juga harus menyebutkan bahwa metode ini membutuhkan titik simpul yang dibuat secara dinamis di mana ujung jari-jari cahaya bertemu dengan permukaan objek yang tersumbat. Ini menciptakan minimal 3 simpul untuk objek yang macet dan akan memungkinkan dinding yang melampaui jari-jari cahaya (atau dari layar) juga menghalangi cahaya.
Informasi lebih lanjut tentang polong cekung dan cembung