У меня возникли проблемы с пониманием того, почему преобразование координаты Z в ортогональной проекции происходит так, как в правосторонней системе координат.
«Функция» для Z с использованием матрицы, которую все используют:
f(z) = -2*z/(far-near) - (far+near)/(far-near)
Насколько я знаю, орфографическая проекция работает так, что она должна отображать левые/правые, верхние/нижние, ближние/дальние координаты в 1/-1.
Но если мы подставим ближнюю и дальнюю координаты, то получим:
f(far) = -2*far/(far-near) - (far+near)/(far-near) = (-3*far - near)/(far - near)
f(near) = -2*near/(far-near) - (far+near)/(far-near) = (-far - 3*near)/(far-near)
Что в большинстве случаев не вернет -1 и +1.
По сути, я предполагаю, что вся функция должна быть инвертирована (по сравнению с тем, как вычисляются координаты X и Y), но вместо этого часть «перевода» остается прежней.