Відмова: Я професійний програміст ігор і користуюся кватерніонами більшість днів, але вони мені близькі до чорної магії. Я відносно вдома з математикою, але уявні числа завжди мене бентежили. Я схильний вважати квати як корисними і не раз перетворюю на множення. Я намагаюся міркувати про них так, як би я матрицями з обмеженим успіхом.
У всякому разі….
Що мене бентежить, це наступне. Коли я хочу обертати об'єкт навколо його локальної осі, я помножую його обертання на кватерніон, який представляє обертання, яке я хочу застосувати. Тому це обертання в локальному просторі.
Тепер, якщо я хочу обертати його навколо осі у світовому просторі, моїм міркуванням було б: сприйміть обертання у світовому просторі як кватерніон. Помножте обертання обертання мого об'єкта на цей кватерніон. Це призведе до моєї світової ротації в місцевому просторі. Помножте обертання на цей новий кватерніон. тобто: newRot = oldRot * (зворотний oldRot * worldRot)
Однак мені потрібно зробити newRot = oldRot * (зворотний oldRot * worldRot) * oldRot.
Чому мені після множення на зворотний кват все ще потрібно помножити власний кват перед його застосуванням? Я знаю, що повинна бути ідеальна поважна причина, але я не можу пояснити свій вихід із цього, і це мене засмучує, як чорт. Я спробував різні файли та багато чого іншого, але більшість заглиблюється в математику, роблячи це менш зрозумілим для мене.
Хто-небудь може мені це пояснити, як мені 5 років?
I try to reason about them like I would with matrices
- значить, ви на правильному шляху. Якщо ви зрозуміли, як обертатися навколо осей об'єкта та осей світу за допомогою матриць, ви можете зробити те ж саме, використовуючи кватерніони. Порядок множення однаковий для обох, матриць та кватерніонів.