Stage 1: Отрисовка стен
Проблема fish eye
Если построить несколько линий в ряд и использовать формулу из прошлой заметки, то можно обнаружить, что изображение будто проходит через линзу — получается немного выпуклым. Этот эффект называется эффектом рыбьего глаза.
2.5D Renderer
2D Renderer
Управление камерой WASD
Дело в том, что вычисление высоты не зависело от угла относительно камеры. Благо, решается эта проблема очень просто:
Исправленная проекция
Как это рассчитать
Рассчитаем относительный угол между направлением камеры и направлением на вершину:
Проекционное расстояние (с учётом угла обзора):