позвольте мне перефразировать ваш вопрос:
вам нужно интерполировать между R0 и R1.
И предлагает сделать это как:
Ri = aR0 + (1-a) R1
Это не сработает, как сказал Виктор в своем ответе: вы получите перекос и объемные деформации.
математически (в контексте трехмерной геометрии) добавление не имеет особого смысла: что означает добавление двух матриц перевода?
установленное решение заключается в интерполяции как:
Ri = (R1 * (обратный (R0))) ^ a * R0
, где мы определяем R ^ a как операцию, которая дает нам вращение вокруг вектора [kx, ky, kz] на * тета градусов.
поэтому, когда а = 0, Ri = R0; когда а = 1, Ri = R1. Это делает интерполяцию на основе умножения, что более естественно в контексте трехмерной геометрии.
Теперь самое сложное, как представить операцию R ^ a. Оказывается, используя кватернионное представление из R позволяет нам представить операцию R ^ a. на основе бумаги Кена Шумейка анимация вращения с кривыми кватернионов