September 7th, 2021

QuatCore

Громко думаем о знаках для FMPM

Это та часть, из-за которой QuatCore (Quaternion core) так называется! Мне хотелось, чтобы умножение кватернионов записывалось довольно просто, без необходимости "в лоб" привести все 16 умножений и 12 сложений, как это делается обычно. А также не хотел делать отдельной процедуры для умножения на сопряжённый кватернион, или того хуже, выделять память под ещё один кватернион, копировать туда исходный, брать сопряжение - и только после этого умножать, поэтому и придумал регистр Inv, который к тому же выражает вполне себе понятную нотацию "плюс-минус" и "минус-плюс".

Но чего-то у меня код немного "расползается": хочу использовать эту конструкцию и для умножения матрицы 2х2 на матрицу поворота 2х2, составленную "на лету" из синуса и косинуса, её же для арктангенса, и её же, разумеется, для умножения кватернионов и поворота вектора с помощью кватерниона - и не могу понять, какие индексные регистры мне использовать.

Изначально таблица была получена из следующих выкладок для перемножения кватернионов:

:









Если слагаемые справа расположить в порядке μ0, μx, μy, μz, то и выйдет наша нынешняя таблица:


Но это не единственный вариант...

Collapse )

Главное - вспомнили, почему выбрали так странно эти регистры и поняли, как сделать лучше. Осталось за малым - переправить десяток строк кода и отладить всё это безобразие. Но это уже завтра...