Ну то есть у вас были, скажем,
, и получились
. Один из путей — очевидный, но, наверно, не обязательно оптимальный для того или иного типа результата — таков:
Чтобы получить
, надо сначала повернуть плоскость
до плоскости
, а потом повернуть полученные
в этой плоскости до
. Для первой задачи надо найти ось вращения, являющуюся пересечением плоскостей (если они совпадают, этот шаг пропускаем целиком), записать вращение вокруг неё и найти угол; для второй достаточно вспомнить, что
. Из полученных данных должно быть можно сконструировать хоть матрицу оператора вращения, хоть углы Эйлера, хоть кватернион, хоть ротор алгебры Клиффорда (который будет выглядеть практически как кватернион, но при этом всё будет честнее).
Да поправит меня
svv.