Stage 1: Отрисовка стен
Разделение стен
Другая проблема Алгоритма художника — он никак не учитывает стены, пересекающие друг друга. В случае пересечения стен получится так, что то одна стена будет рисоваться поверх другой, то другая, в зависимости от положения камеры на карте.
2.5D Renderer
2D Renderer
Для решения достаточно определить вершину пересечения отрезков и разбить их относительно этой вершины:
2.5D Renderer
2D Renderer
Управление камерой WASD
Кстати, чтобы разделять такие линии, в DOOM присутствует сущность Linedef и сущность Seg, то есть сегмент. В будущем мы будем оперировать сегментами вместо отрезков. Теперь получается, что после построения уровня мы работаем с сегментами и само это название наталкивает нашу интуицию на отсутствие пересечений.