No momento, estou usando o algoritmo de linha de Bresenham como linha de visão. O problema é que encontrei um caso em que jogadores podem olhar através das paredes. Ocorre quando o jogador olha entre dois cantos de uma parede com um espaço do outro lado em ângulos específicos.
O resultado que desejo é que o bloco entre duas paredes seja marcado como inválido.
Qual é a maneira mais rápida de modificar o algoritmo de linha de Bresenham para resolver isso? Se não houver uma boa solução, existe um algoritmo mais adequado? Todas as idéias são bem-vindas. Observe que a solução também deve ser capaz de suportar 3d.
Edit: Minha solução simples foi verificar se os dois cantos estão fechados quando as coordenadas x e y de uma linha são alteradas. Para obter o código fonte de trabalho e uma demonstração interativa do produto concluído, consulte http://ashblue.github.io/javascript-pathfinding/