- PVSM.RU - https://www.pvsm.ru -

Кватернионы для чайников

В данной статье на конкретном примере рассматриваются особенности применения различных методов поворота 3D объекта в пространстве. В частности, сравнивается применение углов Эйлера [1] и кватернионов [2].

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

Наглядная демонстрация поворота по углам Эйлера уже была описана в статье на Хабре [3], особенно интересно поиграть с моделью самолётика (ссылки на программу в той же статье внизу [4]).

Заручившись помощью чудесного сайта tinkercad.com [5] представляю вам более наглядную демонстрацию поворотов предмета по углам Эйлера и сравнение с поворотом на основе кватерниона.

Демонстрация поворотов по углам Эйлера

Поворачивать будем избушку на курьих ножках. Вот ссылка на модель: Izba3D [6].

Избушка в изометрии
Рис. 1. Избушка в изометрии

Поворот вокруг оси Z, а потом оси Y

  1. Повернуть на 90 градусов вокруг оси Z

image2
Рис. 2. Результат поворота рисунка 1 на 90 градусов вокруг оси Z

  1. Повернуть на 90 градусов вокруг оси Y

image3
Рис. 3. Результат поворота рисунка 2 на 90 градусов вокруг оси Y

Поворот вокруг оси Y, а потом оси Z

  1. Повернуть на 90 градусов вокруг оси Y

image4
Рис. 4. Результат поворота рисунка 1 на 90 градусов вокруг оси Y

  1. Повернуть на 90 градусов вокруг оси Z

image5
Рис. 5. Результат поворота рисунка 4 на 90 градусов вокруг оси Z

Сравнение и выводы

Сравним получившиеся картинки:

image6
Рис. 6. Сравнение результатов поворота

Вывод: Порядок применения поворотов влияет на результат.

Кватернион

Гораздо удобнее пользоваться кватернионом, а именно, вектором и величиной поворота вокруг этого вектора.

Допустим, мы хотим повернуть избушку вокруг зелёного крылечка на 90, а потом снова на 90 градусов. Тогда пусть направление вектора совпадает с направлением зелёного крылечка.

image7
Рис. 7. Избушка на курьих ножках с зелёным крылечком

image8
Рис. 8. Поворот на 90 градусов вокруг вектора, совпадающего с крылечком

image9
Рис. 9. Второй поворот на 90 градусов вокруг вектора, совпадающего с крылечком

Литература

  1. Кручу-верчу, запутать хочу: углы Эйлера и Gimbal lock, http://habrahabr.ru/post/183116/ [3], 23.06.2014
  2. Углы Эйлера, Википедия, http://ru.wikipedia.org/wiki/%D0%A3%D0%B3%D0%BB%D1%8B_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0 [1], 23.06.2014
  3. Maths — AxisAngle to Quaternion, http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/ [7], 23.06.2014
  4. Вращение и кватернионы. Сборник рецептов, http://www.gamedev.ru/code/articles/?id=4215 [8], 23.06.2014
  5. https://tinkercad.com/ [5]

Автор:

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/uchebny-j-protsess-v-it/249835

Ссылки в тексте:

[1] углов Эйлера: http://ru.wikipedia.org/wiki/%D0%A3%D0%B3%D0%BB%D1%8B_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0

[2] кватернионов: https://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D1%82%D0%B5%D1%80%D0%BD%D0%B8%D0%BE%D0%BD

[3] Хабре: http://habrahabr.ru/post/183116/

[4] в той же статье внизу: http://habrahabr.ru/post/183116#bottom

[5] tinkercad.com: https://tinkercad.com/

[6] Izba3D: https://www.tinkercad.com/things/28AmMQzXjXU

[7] http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/: http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/

[8] http://www.gamedev.ru/code/articles/?id=4215: http://www.gamedev.ru/code/articles/?id=4215

[9] Источник: http://habrahabr.ru/sandbox/107998/