Estoy escribiendo un pequeño juego basado en fichas, para el cual me gustaría admitir fuentes de luz. Pero mi algoritmo-fu es demasiado débil, por lo tanto, vengo a ti en busca de ayuda.Cálculo de las fichas que se encienden en un juego basado en fichas ("trazado de rayos")
La situación es la siguiente: hay un mapa basado en mosaico (que se mantiene como una matriz 2D), que contiene una sola fuente de luz y varios elementos alrededor. Quiero calcular qué fichas están iluminadas por la fuente de luz y cuáles están en la sombra.
Una ayuda visual de lo que se vería, aproximadamente. La L es la fuente de luz, las X son elementos que bloquean la luz, los 0 son azulejos iluminados y las -s son mosaicos en la sombra.
0 0 0 0 0 0 - - 0
0 0 0 0 0 0 - 0 0
0 0 0 0 0 X 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 L 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 X X X X 0 0
0 0 0 - - - - - 0
0 0 - - - - - - -
Un sistema fraccional sería aún mejor, por supuesto, donde una baldosa puede estar en un medio de sombras debido a ser parcialmente oscurecido. El algoritmo no debería ser perfecto, simplemente no obviamente incorrecto y razonablemente rápido.
(Por supuesto, habría múltiples fuentes de luz, pero eso es sólo un bucle.)
Toda la toma?
Gracias por todas sus respuestas. Los revisaré detalladamente e implementaré/publicaré un algoritmo una vez que llegue a casa. – Zarkonnen
¿Has avanzado más en esto? Me interesaría saber cómo te ha ido. –