Всё-таки не давала покоя мне эта тема, решил ещё чуточку поковыряться.
На этот раз выставил угол поворота в 0°. И довольно быстро увидел, что кватернионы поворота, а значит, и ошибки определения поворота у двух методов совпадают эдак до 6-го знака после запятой:
То есть, для нулевого угла методы по сути оказываются эквивалентными. В этом есть смысл...
Ведь чтобы определить, насколько точно один вектор (rk) переходит в другой (тогда мы его называли bk), в методе Мортари-Маркли мы по сути проводим касательную и отмеряем на ней отрезки нужной длины:
Если ось поворота и угол поворота верны, мы, стартуя из точки O, должны по обоим путям (через вектор rk и bk) прийти в одну и ту же точку O'. А там ещё прибавим продольную компоненту каждого вектора, ведь они тоже должны совпасть, если мы правильно выбрали поворот (часть вектора ВДОЛЬ оси поворота должна остаться неизменной).
Так вот, чем больше становится угол поворота - тем больше расстояние OO', и значит, алгоритм обращает "повышенное внимание" на совмещение векторов именно в этой плоскости (изображённой на рисунке), т.к даже малейшая ошибка в угле будет давать довольно приличную разность. Когда угол 90° (как было в первый раз), OO' больше длины векторов в корень из 2 раз, что создаёт некую "анизотропию".
Давайте в кои-то веки посчитаем ошибку измерения поворота не "в целом" по трём осям, а конкретно вдоль оси Z, если именно по оси Z был сделан поворот в 90°, то получим среднюю ошибку в 0,0844° для Дэвенпорта и 0,0841° для Мортари-Маркли, то есть, действительно по этой оси он измеряет точнее! На 0,3% точнее, но всё же!
Сходная картина наблюдается, если смотреть УГОЛ поворота, игнорируя его НАПРАВЛЕНИЕ. Средняя ошибка измерения угла составляет 0,0903° для метода Дэвенпорта и 0,0899° для Мортари-Маркли.
А вот когда угол 0°, у нас длина касательных сокращается до нуля - и расстояние OO' сокращается попросту до длины векторов, в этом случае изотропия восстанавливается - мы оцениваем компоненты разности этого вектора с равными весами. И как только это происходит - два метода начинают выдавать одинаковые данные. Полагаю, небольшие расхождения вызваны уже неточностью моего исполнения метода Дэвенпорта - я сейчас не применял метод Ньютона для уточнения собственного значения.
На этот раз победила дружба. Как видно, если угол поворота небольшой - два метода абсолютно идентичны. По мере роста угла они начинают работать по-разному, в методе Мортари-Маркли проявляется "анизотропия" - он старается очень точно найти угол поворота, но при этом куда меньше заботится об оси поворота. Может, в каких-то приложениях это даже предпочтительнее. Впрочем, если шумы измерений довольно малы - то и здесь методы начинают показывать всё более и более близкие результаты.