Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Вращение и кватернионы. Сборник рецептов. (Комментарии к статье) (3 стр)

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

Страницы: 1 2 3
minorlogicПостоялецwww29 ноя. 201011:19#30
Я бы мог на пальцах расказать как происходит интегрирование вращения но полагаю что лучше обратиться к нормальным туториалам , с исходным кодом.
yerzhikПостоялецwww29 ноя. 201012:39#31
>Легко. Если у вас угловая скорость задается в Радианы в секунды , прсто взять ось вращения и длину вектора как ось и угол Axis Angle.
ось вращения, это нормированный вектор угловой скорости?
А длина это угол вращения получается?

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

Barbar1anПостоялецwww14 мар. 201116:54#32
я чет не понял

читаем
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  - так ведь "Кватернион, умноженный на скаляр, представляет то же самое вращение"

че за?

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

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

minorlogicПостоялецwww15 мар. 20111:06#33
Разбирайтесь дальше. Обратите внимание что, в приведенном коде
result_q = q1 + q2*t;

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

Barbar1anПостоялецwww15 мар. 201117:54#34
та видно что это интерполяция, только что это за инетрполяция?
KimitsuПользовательwww8 дек. 201122:58#35
Заметка по скорости конвертирования кватернионов - чтоб не забыть/потерять.
Измерялось на 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нс

perseyПостоялецwww26 дек. 20112:14#36
Заинтересовала композиция вращений,
собственно вопрос - дана группа объектов-книг, наложенных друг на друга. каждый объект знает о своем смещении относительно нижнего объекта и своем вращении(также относительном).
Как преобразовать локальные координаты любого такого объекта в глобальные?
Только спускаясь по цепочке вниз, преобразуя свои относительные координаты в координаты относительно более нижних объектов или композицию вращений можно задействовать?
IBetsПользовательwww15 авг. 201821:38#37
Вопрос о норме кватерниона. На wiki норма определяется как sqrt(x^2 + y^2 + z ^2 + w^2), но в некоторых статьях как и здесь. Какое определение верное?
DelfigamerПостоялецwww16 авг. 20180:23#38
IBets
На самом деле, "нормой" можно назвать что угодно, что подчиняется неравенству треугольника Norm[a + b] ≤ Norm[a] + Norm[b].
А вот модуль - это именно квадратный корень из скалярного квадрата.
IBetsПользовательwww16 авг. 201823:48#39
Delfigamer
Ну ты загнул у нормы 3 свойства:
Положительно определенна, однородность, неравенство треугольника. Модуль и норма это вообще одно и то же. Просто норму для поля вещественных и комплексных чисел обычно называют модулем
}:+()___ [Smile]Постоялецwww17 авг. 201812:18#40
IBets
> Модуль и норма это вообще одно и то же.
Нет. Модуль — это один из вариантов нормы.
В математических статьях всегда определяют, какой из вариантов нормы будет называться просто "норма".
Т. е. модуль и норма — это одно и тоже только в том случае, если норма определена как модуль.
Страницы: 1 2 3

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

2001—2018 © GameDev.ru — Разработка игр