Pull to refresh

Comments 14

самое лучшее и понятное объяснение того что такое кватернион что я видел в жизни.

Учитывая, что крылечко не вектор, то какому-либо вектору тяжело будет "совпасть" с крылечком.

И ещё, поворачивая избушку вокруг оси, не проходящей через начало координат, Вам нужно задать эту ось - это какая либо точка на оси и вектор, коллинеарный этой оси. Для этого понадобятся два поворота, если мне не изменяет память. Т.е. два кватерниона.

Ось и угол это хорошо, но я думал что (еденичный) квартерион это 4-х елементный ветор:

[v*sin(alpha/2) cos(alpha/2)], где v еденичный вектор направленный вдоль оси, а alpha это угол.

Отсутствием гарантированной консистентности (в силу избыточности данных) и дискретной направленностью. Возвести матрицу в нецелую степень, найти производную, посчитать длину пройденного пути будет не просто.

Так для поворота кватернион тоже избыточен. Достаточно угла \vec \varphi в векторной форме.

Я чую, что всё удобство кватерниона должно быть в том, что он - число, а вектор или матрица - нет. Моя догадка верна?

Кватернион тоже не число, а гиперкомплексное число — такая же математическая абстракция, как и матрица, в этом нет преимущества. Преимущества в аналитичности и одинаковой размерности — не нужно смешивать вектора и матрицы, не нужно использовать множество вариантов умножения (скалярное, векторное и т.д.). Недостатки — в большей сложности, векторы и матрицы интуитивно проще (и в школе их проходят, в отличие от).

Кватернион тоже не число, а гиперкомплексное число — такая же математическая абстракция, как и матрица, в этом нет преимущества.

Отнюдь. Не такая же. Гиперкомплексные числа - это такая же абстракция, как действительные числа, но не такая же, как вектора или матрицы.

Преимущества в аналитичности и одинаковой размерности — не нужно смешивать вектора и матрицы, не нужно использовать множество вариантов умножения

Так это и есть следствие того, что кватернион - число, и на него распространены все операции с числовыми операндами и функции числовых аргументов.

Кватернионы удобны для интерполяции между повернутыми положениями.

Господи, и 10 лет не прошло, а статья вышла!

Я писал эту статью в далёком 2014 году, кажется. Разбирался с тем, как задавать углы для сервомашинок робота в ROS и решил то, что понял выложить в виде статьи.

Сейчас конечно с улыбкой смотрю на эту пробу пера. Избушка - не совсем удачное объяснение. Лучше всего для математиков объясняет Савватеев.

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

Простите, а можете буквально парой формул написать, как из вектора угла поворота получить соответствующий этому повороту кватернион? А то я что ни нагуглю - всё "для чайников", а у меня моральных сил нет плавать в этой воде водянистой.

public set_From_Directed_Angle(dx,dy,dz, a) : Quaternion

{

var k = Math.sqrt(dx * dx + dy * dy + dz * dz);

if (k == 0)

{

return this.identity();

}

var ah : number = a * .5;

k = Math.sin(ah) / k;

this.x_ = dx * k;

this.y_ = dy * k;

this.z_ = dz * k;

this.w_ = Math.cos(ah);

return this;

}

На гитхабе есть куча готовых реализаций, например. А не для чайников — рекомендую книгу «В. Н. Гордеев. КВАТЕРНИОНЫ И БИКВАТЕРНИОНЫ с приложениями В ГЕОМЕТРИИ И МЕХАНИКЕ», там подробно рассмотрена взаимосвязь между кватернионами и матрицами.

Странная статья, из которой не ясно, что хотел сказать автор. Почему в начале пишется о сравнении кватернионов и углов Эйлера, а вывод (причём довольно очевидный) есть только по углам Эйлера? Следует ли из этого вывода, что для кватернионов порядок применения поворотов не влияет результат —не сказано. Почему для углов Эйлера повороты показаны относительно главных осей, а для кватернионов - относительно "крылечка"?

Sign up to leave a comment.

Articles