Как используются «магические константы» в реальных реализациях?
На днях прочитал статью о "магической константе", используемой в Quake III (https://habr.com/ru/articles/730872/). Стало интересно какие еще константы подобного рода можно использовать, и для чего (полагаю, что каждая из них будет использоваться под конкретные цели). В поисковике по подобному запросу мало что можно найти. Буду рад любой информации.
Магические константы не появляются ниоткуда. Никакие они не магические, всегда есть объяснение использованию конкретно этой константы, нужно только его найти, часто это бывает не просто.
В любом случае, использование константы продиктовано предметной областью и конкретной задачей.
Вас не смущает использование магической константы NULL?
Магическими их называют, потому что, когда вы в коде используете константу типа 1234 - то нифига не понятно, что эти цифры означают в коде и зачем они тут. Поэтому они магические - не понятные. Если этой константе дать имя, то магия может исчезнуть, если имя будет удачным.
Ты должен спрашивать какие алгоритмы игровой графики бывают. Это важное. А константа - это просто реализация.
Почитай Генри Уоррена - Алгоритмические трюки для программистов. Там есть всякое. Деление через умножение на магию. Умножение через сдвиги. Дискретные логарифмы и корни и прочее.
Самое популярное применения - когда лень писать отдельный конфиг или формулу. Например, мы можем написать что-то вроде server.listen('0.0.0.0') вместо вынесения конкретного интерфейса в конфиг-файл + чтение + валидация. Другой пример: у нас есть очень сложная модуль или функцияy=f(x), но мы просто заменяем её на прямую, тогда y(x)=k*x.