ПрограммированиеФорумОбщее

Вращение и кватернионы. Сборник рецептов. (Комментарии к статье) (3 стр)

Страницы: 1 2 3
#30
11:19, 29 ноя 2010

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

#31
12:39, 29 ноя 2010

>Легко. Если у вас угловая скорость задается в Радианы в секунды , прсто взять ось вращения и длину вектора как ось и угол Axis Angle.
ось вращения, это нормированный вектор угловой скорости?
А длина это угол вращения получается?

Посоветуйте пожалуйста туториалы, о которых вы говорили выше...

#32
16:54, 14 мар 2011

я чет не понял

читаем
1.Кватернион, умноженный на скаляр, представляет то же самое вращение, кроме случая умножения на 0."
2.Смысл операции сложения можно описать как "смесь" вращений, т.е. мы получим вращение, которое находится между q и  q'

смотрим линейную интерполяцию

    inline void interpolate( float t, xxquaternion& result_q){
          result_q = q1 + q2*t;
    }

q1 + q2*t  - так ведь сумма кватернионов дает не сумму вращений, а "вращение, которое находится между q и  q' "
q2*t  - так ведь "Кватернион, умноженный на скаляр, представляет то же самое вращение"

че за?

вместо "+" должно быть умножение?

а вместо умножения на скаляр что?

#33
1:06, 15 мар 2011

Разбирайтесь дальше. Обратите внимание что, в приведенном коде
result_q = q1 + q2*t;

q1 это первый кватернион для интерполяции а q2 это дельта между первым и вторым . Раскройте выражение.

#34
17:54, 15 мар 2011

та видно что это интерполяция, только что это за инетрполяция?

Прошло более 8 месяцев
#35
22:58, 8 дек 2011

Заметка по скорости конвертирования кватернионов - чтоб не забыть/потерять.
Измерялось на Athlon II 3GHz + Qt 4.7 64-bit. Считалось в double.
Измерения проводились в цикле, выполняющемся 10-40 секунд.


Конвертирование Axis Angle:
AxisAngle -> Quaternion = 100нс
    x = axis.x();
    y = axis.y();
    z = axis.z();
    w = qCos(angle);

Quaternion -> Axis        = 42нс
    Vector(x, y, z).normalize;

Quaternion -> Angle      = 38нс
    acos(w)  * 360 / pi;

Конвертирование Euler Angles:
EulerAngles -> Quaternion = 355нс
    перевод углов в кватернионы через Axis Angle
    и перемножение полученных кватернионов

EulerAngles -> Quaternion = 234нс
    алгоритм с вычислением квадратного корня

EulerAngles -> Quaternion = 200нс
    алгоритм только с тригонометрией

Quaternion -> EulerAngles = 164нс


Конвертирование в матрицу вращения: = 18нс


Умножение кватернионов = 15нс
Сложение кватернионов = 6нс

#36
2:14, 26 дек 2011

Заинтересовала композиция вращений,
собственно вопрос - дана группа объектов-книг, наложенных друг на друга. каждый объект знает о своем смещении относительно нижнего объекта и своем вращении(также относительном).
Как преобразовать локальные координаты любого такого объекта в глобальные?
Только спускаясь по цепочке вниз, преобразуя свои относительные координаты в координаты относительно более нижних объектов или композицию вращений можно задействовать?

Прошло более 6 лет
#37
21:38, 15 авг 2018

Вопрос о норме кватерниона. На wiki норма определяется как sqrt(x^2 + y^2 + z ^2 + w^2), но в некоторых статьях как и здесь. Какое определение верное?

#38
0:23, 16 авг 2018

IBets
На самом деле, "нормой" можно назвать что угодно, что подчиняется неравенству треугольника Norm[a + b] ≤ Norm[a] + Norm[b].
А вот модуль - это именно квадратный корень из скалярного квадрата.

#39
23:48, 16 авг 2018

Delfigamer
Ну ты загнул у нормы 3 свойства:
Положительно определенна, однородность, неравенство треугольника. Модуль и норма это вообще одно и то же. Просто норму для поля вещественных и комплексных чисел обычно называют модулем

#40
12:18, 17 авг 2018

IBets
> Модуль и норма это вообще одно и то же.
Нет. Модуль — это один из вариантов нормы.
В математических статьях всегда определяют, какой из вариантов нормы будет называться просто "норма".
Т. е. модуль и норма — это одно и тоже только в том случае, если норма определена как модуль.

Страницы: 1 2 3
ПрограммированиеФорумОбщее

Тема в архиве.