Я работаю над Roguelike, и для него я создал алгоритм трассировки лучей (FoV), который состоит из построения линий Брезенхэма в каждой точке сплошного круга. Он не содержит артефактов (и достаточно эффективен), но в нем отсутствует важное мое требование: симметрия (если вы видите монстра, он также должен видеть вас).
Вот пример несимметричного поведения моего кода. На левом изображении я стою в углу (красные блоки «X» = стена). Я могу видеть верхнюю правую плитку. Однако, если я перейду к одной из этих плиток (правое изображение), я больше не смогу увидеть плитку, с которой я пришел.
Я думаю, что я мог бы быть после формы Разрешающего поля зрения , но только потому, что в статье Рогебасина было предложено учесть симметрию. Есть ли альтернативные способы получить симметрию?