Я пишу небольшую игру на основе плитки, для которой я хотел бы поддерживать источники света. Но мой алгоритм-fu слишком слаб, поэтому я прихожу к вам за помощью.
Ситуация такова: существует карта на основе плитки (содержащаяся как 2D-массив), содержащий один источник света и несколько предметов, стоящих вокруг. Я хочу рассчитать, какие плитки освещены источником света и которые находятся в тени.
Наглядное пособие, как это будет выглядеть примерно. L - источник света, Xs - это элементы, блокирующие свет, 0s - горящие плитки, а -s - плитки в тени.
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 - - - - - - -
Дробная система была бы даже лучше, конечно, там, где плитка может быть в полутени из-за частично затенения. Алгоритм не должен быть совершенным - просто не очевидно, что это неправильно и достаточно быстро.
(Конечно, было бы много источников света, но это всего лишь цикл.)
Любые участники?