Кватернионы против оси + угол - PullRequest
10 голосов
/ 23 февраля 2012

Я пытался найти разницу между двумя, но безуспешно минус это

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

Понятия не имею, что

синус половинного угла поворота

или

косинус половинного угла

означает?

Ответы [ 2 ]

12 голосов
/ 05 августа 2013

Quaternios и Axis-angle являются 4D-представлениями трехмерных поворотов / ориентаций, и оба имеют за и против.

Axis-angle: представляет поворот на угол a и ось вращения n . Например, поворот на 180 градусов вокруг оси Y будет представлен как a = 180, n = {0,1,0}. Представление очень интуитивно понятно, но для фактического применения вращения требуется другое представление, например кватернион или матрица вращения.

Quaternion: представляет вращение четырехмерным вектором. Требует больше математики и менее интуитивно понятный, но гораздо более мощное представление. Кватернионы легко интерполируются (смешиваются), и их легко наносить на трехмерную точку. Эти формулы можно легко найти в Интернете. При вращении a радиан вокруг нормализованной оси n вектор четырехмерного кватерниона будет равен {cos a / 2, (sin a / 2) n_x, (sin a / 2) n_y, (sin a / 2) n_z}. Вот откуда берутся синус и косинус половинного угла.

4 голосов
/ 30 июля 2012

Это означает, что если вы, например, хотите сделать вращение на 180 градусов вокруг оси Z (0,0,1), то реальная часть кватерниона будет cos(180deg/2)=0, а его мнимая часть будет sin(180deg/2)*(0,0,1)=(0,0,1) , Это q=0+0i+0j+1k. Поворот на 90 градусов даст вам q=cos(90deg/2)+sin(90deg/2)*(0i+0j+1k)=sqrt(2)/2+0i+0j+sqrt(2)/2*k и т. Д.

OTOH, если вы спрашиваете, что такое синус и косинус, проверьте, предоставляет ли ваш язык функции sin() и cos() (хотя их аргументы, вероятно, будут в радианах), и проверьте http://en.wikipedia.org/wiki/Sine.

...