给定三维中的两个仿射变换(即TRS变换)T0和T1,每个由平移向量(t),四元数(r)和缩放向量表示(s) .
现在,假设我想计算组合变换,即创建单个对应于T1(T0(*))的变换
一种(简单的)方法是简单地建立3x4矩阵对应于此变换,提取平移向量和组合缩放/旋转矩阵然后用极坐标分解把矩阵分解成缩放向量和四元数。这然而,分解在计算方面是相当昂贵的,它是否可能计算新的缩放向量和四元数没有这个操作?
我几个月前才开始学习这个,但我认为我可以回答你的问题-我认为可以计算新的缩放向量和四元数,而无需显式执行极坐标分解。我已经列出了下面的步骤:
-
从平移向量、四元数旋转和T0和T1的缩放向量开始:
- T0的平移向量:T0
- T0: r0的四元数旋转
- T0的缩放向量:s0
- T1平移向量:T1
- T1: r1的四元数旋转
- T1的缩放向量:s1
-
计算新的平移向量:t_new = T1(t0) + T1
-
计算新的四元数旋转:R_new = r1 * r0
-
计算新的缩放向量:S_new = s0和s1的逐元素乘法
现在,您有新的平移向量(t_new),四元数旋转(r_new)和缩放向量(s_new),它们一起表示组合变换T1(T0(*))。