Прошу сильно не пинать, в геометрической терминологии я семиклассник. Есть трехмерное пространство, координатные оси X, Y, Z (по Декарту, если не ошибаюсь). Есть куб, который стоит на своей нижней грани. Его я поворачиваю на случайный угол по двум осям (в моем случае это X и Y, углы поворота всякие-разные, в пределах 0-90 градусов). Возник вопрос - по какой формуле рассчитать новые углы поворота, чтобы просто перевернуть куб на другую грань? (необходимо поворачивать на разные грани) Прилагаю ссылки на картинки, так как вставить в сообщение не могу. Больше не знаю, как выразить суть своей проблемы. Заранее благодарен за помощь. задан 12 Ноя '13 23:57 prineside |
Для того, чтобы получить конфигурацию 3, надо сначала повернуть куб вдоль оси X на 90 градусов по часовой стрелке. При этом бывшая грань top займёт положение, которое изначально занимала грань front. После этого выполняются те преобразования, которые делались, то есть поворот на 10 градусов по X и на 20 градусов по Y.
Задача состоит в создании одной функции... Я слабо представляю, как это проделать, если куб приидется поворачивать на каждую грань.
В голове у меня возможное решение - "повернуть объект, сбросить систему координат, не поворачивая куб (ось Z смотрит вверх...) и повернуть куб еще раз", но ни формулами, ни представлением, как это сделать, я не владею
Повороты вокруг осей задаются их матрицами. Последовательному выполнению преобразований соответствует перемножение матриц. Это всё есть в Сети, и по ключевым словам (типа "матрицы поворотов") можно "погуглить".
Я, конечно же, "гуглил". Как выяснил для себя, проще перевести угол поворота в кватернион, так как матрицы поворотов требуют большое количество вычислений, да и наглядности меньше.