У мене є деякі моделі, які я хочу обертати за допомогою кватерніонів у звичайному порядку, за винятком того, що замість обертання щодо походження, я хочу, щоб це було трохи компенсовано. Я знаю, що ви не говорите в 3d просторі, що обертаєтеся навколо точки; ви кажете, що обертаєтесь навколо осі. Тому я візуалізую це як обертання навколо вектора, хвіст якого розташований не за місцевим початком.
Усі афінні перетворення в моєму механізмі візуалізації / фізики зберігаються за допомогою SQT (шкала, кватерніон, переклад; ідея, запозичена з книги Game Engine Architecture .) Тому я будую матрицю кожного кадру з цих компонентів і передаю їх у вершину шейдера. У цій системі застосовується переклад, потім масштаб, потім обертання.
В одному конкретному випадку мені потрібно перевести об’єкт у світовий простір, масштабувати його та обертати його навколо вершини, не орієнтованої на місцеве походження об'єкта.
Питання: Враховуючи обмеження моєї поточної системи, описані вище, як я можу досягти локального обертання, орієнтованого на точку, відмінну від початку? Автоматичне оновлення для всіх, хто може описати, як це зробити, використовуючи лише матриці :)