Я выполняю 3D-симуляцию за кулисами во время рендеринга мира на моем 2-мерном изометрическом движке. Раньше я никогда не делал изометрический двигатель, и моя математическая матрица вообще ржавая, поэтому у меня проблемы.
У меня есть матрица проекции, которая в простейшем виде такова:
0.7 0.35 0
0 -0.87 0
-0.71 0.35 1
Пара знаков перевернута, потому что моя система координат двигателей равна 0,0 слева вверху, + X вправо / востоку и + Z югу.
Теперь, обратное этому:
1.4080 0.5670 0.0000
0.0000 -1.1490 0.0000
1.0000 0.8050 1.0000
Теперь эти матрицы в основном работают.
Например,
WC: 500,0500 = Экран: -1,44, 350, 500 (X и Y верны)
WC: 0,0,500 = Экран: -355, 175, 500 (X и Y снова верны)
Но теперь, если вам нужно пойти другим путем, у вас больше нет этого удобного значения Z, поэтому
Экран: -1,44, 350, 0 = WC: -2, -402,97, 0 (итак, фигня.)
И многое другое - как только у меня больше не будет этого значения Z, я не смогу извлечь мировые координаты из экранных координат.
Какой здесь обходной путь?
EDIT
Я должен отметить, что цель не-проекта в том, чтобы получить луч для выбора мыши.
Кажется, что это только мое неправильное восприятие того, что я делал, что меня здесь напортачило.