У меня есть класс, который содержит матрицу 4x4 для масштабирования и перевода. Как мне применить методы ротации к этому классу? И должен ли я выполнять вращение как отдельную матрицу?Матрицы вращения и OpenGL
ответ
Вы можете умножить свою текущую матрицу на матрицу вращения. Посмотрите на http://en.wikipedia.org/wiki/Rotation_matrix
Существует сайт, который я использую каждый раз, когда мне нужно искать детали трехмерного преобразования, называемого http://www.euclideanspace.com. Определенную страницу по вращению матрицы можно найти here.
Редактировать: Вращение вокруг данной оси, просмотр axis & angle Представление. Эта страница также ссылается на описание того, как перевести одно представление в другое.
Если вам нужно вращаться вокруг нескольких осей, просто умножьте соответствующие матрицы.
hmm, который подсказывает мне, как вращаться по оси x y или z или поворачивать вектор под углом, но не как поворачивать x y и z azis сразу же, учитывая вектор –
Отвечая на вторую половину вопроса, одна матрица 4x4 отлично способна масштабировать, переворачивать и поворачивать. Поэтому, если вы не наложили особых ограничений на какие 4x4 матрицы вы можете обрабатывать, один 4x4 является штраф за то, что вы хотите.
Что касается вращения вокруг произвольного вектора (как вы спрашиваете в комментариях), посмотрите раздел «Вращение вокруг произвольного вектора» в ссылках на статью yabcok в Википедии. Вы захотите расширить его до матрицы 4x4, заполнив ее нулями, за исключением позиции 4,4 (масштабирования), которая должна быть одной. Затем используйте матричное умножение с вашим масштабированием/трансляцией 4x4 для создания новой матрицы 4x4.
Вы хотите убедиться, что найдете ссылку, которая говорит о правильном виде матрицы, которая используется для компьютерной графики (а именно 3D-однородные координаты с использованием матрицы преобразования 4x4 для вращения/перевода/перекоса).
См компьютерной графики "библия", такие как Foley and Van Dam (pg. 213), или один из них:
Эта страница имеет довольно много полезной информации:
http://knol.google.com/k/matrices-for-3d-applications-translation-rotation
- 1. OpenGL кватернионов вращения матрицы
- 2. OpenGL вектор вращения от матрицы
- 3. Матрицы вращения Java и OBB
- 4. Проекция матрицы вращения
- 5. Opengl Камера и матрицы умножения
- 6. Объект трансляции и вращения OpenGL
- 7. Матрицы в OpenGL
- 8. Android OpenGL матрица вращения деформация
- 9. Как использовать матрицы вращения?
- 10. объяснение матрицы вращения iOS
- 11. вращения поступательной составляющей матрицы
- 12. Обратный порядок матрицы вращения
- 13. Удалите произвольную ось вращения из матрицы вращения
- 14. Создание матрицы вращения
- 15. ошибка сегментации вращения матрицы
- 16. Расчет матрицы вращения
- 17. проблема вращения opengl
- 18. OpenGl GLM локального вращения
- 19. OpenGL - ограничение вращения Arcball
- 20. OpenGL вращения круга
- 21. Как получить ось-угол от матрицы вращения?
- 22. Шаг камеры OpenGL, поворот рыскания и вращения
- 23. Вектор направления Для вращения матрицы
- 24. Оптимизация производительности для матрицы вращения
- 25. Поворот Texture2D с помощью вращения матрицы
- 26. Y поворот из матрицы вращения
- 27. порядка андроид вращения преобразования матрицы
- 28. Ориентация OpenGL. (Идентификация вращения в отрицательном z)
- 29. iPhone OpenGL: обнаружение вращения объекта
- 30. Opengl с использованием локального вращения
ах, так что я бы только генерировать матрицу вращения и размножайтесь с текущей матрицей, а не хранить 2? Как бы я сгенерировал матрицу вращения, если бы вектор xyz вращался в трех измерениях? –
@Nowell, Что значит? В зависимости от вашей структуры создайте матрицу для вращения и умножьте ее на исходную матрицу. Или вы можете применить умножение непосредственно к своей матрице. – strager
Im в основном пытается воссоздать функциональность glRotate –