Pull to refresh
  • by relevance
  • by date
  • by rating

Каверзные кватернионы

Game development *Algorithms *Unity3D *


Отгадайте загадку: в четырёх измерениях сидит и комплексными числами воротит?

Подсказка: это вектор со скаляром. И вещественная матрица. И придумал его Гамильтон.

Не помогло? Ну что вы, это же элементарно! Это кватернион! Кватернионы используют для записи вращений в робототехнике, игровых движках, ПО для моделирования и вообще везде, где не нужны проблемы с углами Эйлера или матрицами. Если вас испугала путаница выше с разными представлениями кватерниона, то можете быть спокойны. Кватернионы очень просты в использовании и их внутреннее строение может понадобиться только в очень редких случаях, где нужна тонкая оптимизация. В остальное время с помощью кватернионов можно крутить всё что угодно и как угодно, и оно будет плавно и красиво интерполироваться без шарнирных замков.
Что же такое кватернион?
Total votes 110: ↑102 and ↓8 +94
Views 174K
Comments 48

Заметки о вращении вектора кватернионом

Algorithms *Mathematics *
Sandbox

Структура публикации


  • Получение кватерниона из вектора и величины угла разворота
  • Обратный кватернион
  • Умножение кватернионов
  • Поворот вектора
  • Рысканье, тангаж, крен
  • Серия поворотов


Получение кватерниона из вектора и величины угла разворота


Ещё раз – что такое кватернион? Для разработчика – это прежде всего инструмент, описывающий действие – поворот вокруг оси на заданный угол:

(w, vx, vy, vz),

где v – ось, выраженная вектором;
w – компонента, описывающая поворот (косинус половины угла).
Читать дальше →
Total votes 24: ↑19 and ↓5 +14
Views 88K
Comments 22

Имитация показаний датчиков с помощью массива точек пути

Algorithms *Mathematics *


Структура публикации


  • Оговорка про крен
  • Подготовка GPS-трека
  • Как из массива векторов получить углы Крылова-Эйлера
  • Имитация показаний гироскопа
  • Вектор ускорения свободного падения и направление «на север»
  • Имитация показаний акселерометра, компаса и барометра


Для отладки алгоритма, работающего с датчиками инерциальной навигации, может потребоваться имитировать показания этих самых датчиков. Например, вы имеете отладочную последовательность точек пути, имитирующую определённую ситуацию. Вы можете иметь некий GPS-трек, имеющий особенности, или напротив их не имеющий. В моём случае результат полевых испытаний есть, а плата ещё не готова (в производстве) — нужно чем-то заняться.
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Views 22K
Comments 4

Введение в процедурную анимацию

Game development *Mathematics *Unity3D *
Translation
image

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

GIF

Серия будет состоять из следующих частей:

Total votes 48: ↑46 and ↓2 +44
Views 40K
Comments 3

Ещё одна статья про кватернионы и углы Эйлера

Game development *Algorithms *Mathematics *Unity3D *
Sandbox
По работе у меня возникла необходимость переводить координаты объекта из углов Эйлера в кватернионы и обратно.

В ходе разбирательства пришлось прочитать несколько статей на Хабре, посвященных кватернионам и углам Эйлера, Википедию и просто методички и статьи разных ВУЗов. Для удобства приведу ссылки на статьи, с Хабра:

Каверзные кватернионы
Заметки о вращении вектора кватернионом
Кватернионы для чайников
Кручу-верчу, запутать хочу. Углы Эйлера и Gimbal lock

Формулы для пересчёта углов Эйлера в кватеринионы и обратно найти можно, но
если бы всё было так просто...
Total votes 25: ↑20 and ↓5 +15
Views 21K
Comments 30

Доступно о кватернионах и их преимуществах

Working with 3D-graphics *Game development *Mathematics *
Translation

От переводчика: ровно 175 лет и 3 дня назад были изобретены кватернионы. В честь этой круглой даты я решил подобрать материал, объясняющий эту концепцию понятным языком.

Концепция кватернионов была придумана ирландским математиком сэром Уильямом Роуэном Гамильтоном в понедельник 16 октября 1843 года в Дублине, Ирландия. Гамильтон со своей женой шёл в Ирландскую королевскую академию, и переходя через Королевский канал по мосту Брум Бридж, он сделал потрясающее открытие, которое сразу же нацарапал на камне моста.

$i^2=j^2=k^2=ijk=-1$




Памятная табличка на мосту Брум Бридж через Королевский канал в честь открытия фундаментальной формулы умножения кватернионов.

В этой статье я постараюсь объяснить концепцию кватернионов простым для понимания образом. Я объясню, как можно визуализировать кватернион, а также расскажу о разных операциях, которые можно выполнять с кватернионами. Кроме того, я сравню использование матриц, углов Эйлера и кватернионов, а затем попытаюсь объяснить, когда стоит использовать кватернионы вместо углов Эйлера или матриц, а когда этого делать не нужно.
Читать дальше →
Total votes 83: ↑83 and ↓0 +83
Views 121K
Comments 53

Давайте уберём кватернионы из всех 3D-движков

Working with 3D-graphics *Game development *Mathematics *
Translation
image

Для записи трёхмерных поворотов программисты графики используют кватернионы. Однако в кватернионах сложно разобраться, потому что изучают их поверхностно. Мы просто принимаем на веру странные таблицы умножения и другие загадочные определения, и используем их как «чёрные ящики», поворачивающие векторы так, как нам нужно. Почему $\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=-1$ и $\mathbf{i} \mathbf{j} = \mathbf{k}$? Почему мы берём вектор и превращаем его в «мнимый» вектор, чтобы преобразовать его, например $\mathbf{q} (x\mathbf{i} + y\mathbf{j} + z \mathbf{k}) \mathbf{q}^{*}$? Да кому это интересно, если всё работает, правда?

Существует способ описания поворотов под названием ротор, который относится к области и комплексных чисел (в 2D), и кватернионов (в 3D), и даже обобщается до любого количества измерений.

Мы можем создавать роторы практически полностью с нуля, вместо того, чтобы определять из ничего кватернионы и пытаться объяснить, как они работают задним числом. Это занимает больше времени, но мне кажется, что это стоит того, потому что их гораздо легче понять!

Кроме того, для визуализации и понимания трёхмерных роторов не нужно использовать четвёртое пространственное измерение.

Было бы здорово, если бы начали вытеснять использование и изучение кватернионов, заменяя их роторами. Заменить их очень просто, а код останется почти таким же. Всё, что можно делать с кватернионами, например, интерполяцию и устранение блокировки осей (Gimbal lock), можно сделать и с роторами. Но понимать мы начинаем гораздо больше.
Читать дальше →
Total votes 54: ↑53 and ↓1 +52
Views 25K
Comments 43

Бикватернионы

Game development *Mathematics *Physics
Sandbox
Если вы открыли данную статью, то наверняка уже слышали о кватернионах, и возможно даже используете их в своих разработках. Но пора подняться на уровень выше — к бикватернионам.

В данной статье даны основные понятия о бикватернионах и операции работы с ними. Для лучшего понимания работы с бикватернионами показан наглядный пример на Javascript с использованием Canvas.
Читать дальше →
Total votes 54: ↑53 and ↓1 +52
Views 16K
Comments 27

Оценивание пространственной ориентации, или Как не бояться фильтров Махони и Маджвика

Global Positioning Systems *Algorithms *Mathematics *Robotics Multicopters
Tutorial

О чём речь


Появление на Хабре поста о фильтре Маджвика было по-своему символическим событием. Видимо, всеобщее увлечение дронами возродило интерес к задаче оценивания ориентации тела по инерциальным измерениям. При этом традиционные методы, основанные на фильтре Калмана, перестали удовлетворять публику — то ли из-за высоких требований к вычислительным ресурсам, неприемлемых для дронов, то ли из-за сложной и неинтуитивной настройки параметров.

Пост сопровождался весьма компактной и эффективной реализацией фильтра на C. Однако судя по комментариям, физический смысл этого кода, а равно и всей статьи, для кого-то остался туманным. Что ж, признаем честно: фильтр Маджвика — самый замысловатый из группы фильтров, основанных в общем-то на очень простых и элегантных принципах. Эти принципы я и рассмотрю в своём посте. Кода здесь не будет. Мой пост — не рассказ о какой-то конкретной реализации алгоритма оценивания ориентации, а скорее приглашение к изобретению собственных вариаций на заданную тему, которых может быть очень много.

image
Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Views 17K
Comments 21

Самая красивая теорема математики: тождество Эйлера

Mathematics *Popular science
Translation
Посмотрев лекцию профессора Робина Уилсона о тождестве Эйлера, я наконец смог понять, почему тождество Эйлера является самым красивым уравнением. Чтобы поделиться моим восхищением это темой и укрепить собственные знания, я изложу заметки, сделанные во время лекции. А здесь вы можете купить его прекрасную книгу.

Что может быть более загадочным, чем взаимодействие мнимых чисел с вещественными, в результате дающее ничто? Такой вопрос задал читатель журнала Physics World в 2004 году, чтобы подчеркнуть красоту уравнения Эйлера «e в степени i, умноженного на пи равно минус единице».


Рисунок 1.0: тождество Эйлера — e в степени i, умноженного на пи, плюс единица равно нулю.

Ещё раньше, в 1988 году, математик Дэвид Уэллс, писавший статьи для американского математического журнала The Mathematical Intelligencer, составил список из 24 теорем математики и провёл опрос, попросив читателей своей статьи выбрать самую красивую теорему. И после того, как с большим отрывом в нём выиграло уравнение Эйлера, оно получило званием «самого красивого уравнения в математике».
Читать дальше →
Total votes 94: ↑88 and ↓6 +82
Views 80K
Comments 77

Как устроены волны

Mathematics *Popular science Physics
Волны — это самое распространённое явление. Физические колебания, звук, свет, радио и рентген, волны вероятности в квантовой механике, гравитационные волны в теории относительности — физика практически состоит из волн. Каждое явление можно изучать отдельно, но есть что-то общее в волнах, универсальное.

Чтобы ухватить это общее предлагаю разбираться в волнах последовательно.

Начнём с вопроса, на первый взгляд не связанного с темой, но ответ на который сразу много прояснит.

image
Рис. 1. «Две параллельные линии». Канва, браш. Рама.

Перед вами две параллельные линии, с ограниченной областью их просмотра, квадратным окном. Для различия они раскрашены. Вопрос простой: если красная линия это сдвинутая зелёная, то в какую сторону произошел сдвиг?
Конечно, вправо-вверх, зачем ещё пять вариантов ответа?
Total votes 43: ↑43 and ↓0 +43
Views 16K
Comments 16

Кватернионы, матрицы поворота и перепроецирование векторов между системами координат

Mathematics *
Пришлось это мне в последнее время поработать с задачами, где нужно было оперировать кватернионами и заниматься перепроецированием векторов в разные системы координат (это еще называется заменой базиса). Сначала по чужим формулам — причем с опечатками и даже, как выяснилось, с фактическими ошибками — а потом делать свои, по аналогии. И всё даже работало! Но сохранялся какой-то туман в понимании происходящего. А всё, как оказалось, из-за этих ошибок: их комбинация давала систему, в целом сохраняющую корректность, неверным путем таки достигался верный результат. Зато такая удача сильно мешала осознанию проблемы и прояснению природы феномена «верный итог при подозрительных формулах». При этом разбираться досконально времени все не было — работает же, числа выдает правильные, чего тебе еще надо, собака? Вперед, нужно больше золота кода! А вот сейчас пришел момент, когда я, похоже, окончательно всё понял, и хочу поделиться получившейся картинкой с окружающими. Вдруг кому пригодится, и себе памятка.

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

Стало быть, речь у нас пойдет в особенности о проекциях и поворотах.

image
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 4.5K
Comments 6

Единый математический язык для физики и инженерного искусства в 21 веке

Mathematics *Popular science Physics
Translation

Конец 18-го и 19-й век были временем колоссального прогресса в математике. Величайшие умы тысячелетия вводили все новые математические системы и языки, такие как алгебры Клиффорда и Грассмана. Хотя эти алгебры вызвали значительный интерес, в то время они воспринимались как подспорье более прямолинейной и более общеприменимой векторной алгебры Гиббса. Это было фактически концом поисков объединяющего математического языка и началом распространения новых алгебраических систем, создаваемых по мере необходимости; например, спинорная алгебра, матричная и тензорная алгебры, дифференциальные формы и т. д.

В этой статье мы реализуем возрождение алгебр Клифорда и Грассмана в виде структуры, известной как геометрическая алгебра (ГА). Это понятие было впервые введено в середине 1960-х годов американским физиком и математиком Дэвидом Хестенсом. Прошло 40 лет, но есть признаки того, что его утверждение о том, что ГА является универсальным языком для физики и математики, теперь начинает принимать все более явственные очертания. Во всем мире растет число групп, которые применяют ГА к целому ряду проблем из многих научных областей, обеспечивая чрезвычайно мощную математическую структуру, в которой могут быть выражены самые передовые концепции квантовой механики, теории относительности, электромагнетизма и т. д. При этом, утверждается, что ГА также достаточно проста для преподавания школьникам! В этой статье мы рассмотрим развитие и недавний прогресс ГА и обсудим, действительно ли она является объединяющим языком для физики и математики 21-го века. Примеры, которые мы будем использовать для иллюстрации, будут взяты из ряда областей физики и техники.

Читать далее
Total votes 17: ↑17 and ↓0 +17
Views 7.9K
Comments 12