Как я могу преобразовать правильные углы в изометрические углы?

введите здесь описание изображения

В настоящее время я работаю над изометрической игрой, и мне нужна помощь в правильном преобразовании обычных углов для работы с изометрическими масштабированными углами. Я показал грубый пример того, как один и тот же угол отличается в изометрической перспективе.

По сути, если у меня есть угол в градусах или радианах, я ищу способ преобразовать его в тот же угол, только с изометрическим перекосом. Любая помощь или точка в правильном направлении были бы очень полезны.

Кстати, мне, возможно, придется указать, что, поскольку я работаю с пиксельной графикой, изометрический угол не является стандартным 30 градусами, а составляет 26,6.


person Steve    schedule 27.03.2012    source источник


Ответы (2)


Вы должны работать независимо от мира и его представления...

Я думаю, что лучше определить ваш мир с базой по умолчанию, (1,0,0), (0,1,0), (0,0,1)... и работать с логикой в ​​​​этой базе....

а затем, когда вам нужно визуализировать его, вам нужно только визуализировать с изометрической проекцией.

person Blau    schedule 27.03.2012
comment
На самом деле это потребует гораздо больше работы, чем то, что я предлагаю. Причина, по которой мне нужен перевод угла в угол, связана с настройкой начального диапазона, в который должны попадать другие проверки угла. Если я понимаю, о чем вы говорите, мне придется иметь два отдельных набора координат для всех объектов моего мира с единственной целью определения углов -_-;; - person Steve; 27.03.2012
comment
у вас есть только мировые координаты в вашем методе обновления... изометрические спроецированные координаты рассчитываются, преобразуя мировые координаты в изометрические посредством матричного преобразования в методе рисования... - person Blau; 28.03.2012
comment
Я работаю над игрой на основе 2D-спрайтов, поэтому единственные матричные преобразования, которые я сейчас выполняю, если вообще выполняются, - это масштабирование и вращение камеры. Все в игре позиционируется на основе мировых координат и уже находится в изометрической форме. Если я правильно понимаю, что вы предлагаете, я не думаю, что смог бы сделать это, не имея возможности обратного преобразования всех координат в то место, где они были бы в неизометрическом состоянии. - person Steve; 07.04.2012

Не уверен на 100%, но я думаю, что вы можете выполнить следующие шаги, чтобы сделать это:

Start with a vector on the first image.
Rotate it to the isometric version.
Project the resulting vector to the view plane.
Take the angle of the resulting vector.
person Dave Cousineau    schedule 27.03.2012