相对于不同坐标系的轴缩放和旋转 3D 点

Scale and rotate 3D points with respect to axis of a different coordinate system

我在坐标系 B 中有一组 3D 点,我想围绕每个坐标轴旋转和缩放特定角度 theta 和特定比例因子 scale系统 B,然后将它们转换到不同的坐标系 A。我知道 4x4 转换将坐标系 B 中的点转换为坐标系 A.

例如,

我有一个变换矩阵

Tr =   [0.0065,0.9999,-0.0106,-5.0682
       -0.0105,-0.0105,-0.9999,1.7843
       -0.9999,0.0066,0.0105,8.6412
        0.0000,0.0000,0.0000,1.0000]

目前,我使用 Tr 将 3D 点从坐标系 B 转换为 A。 但是,我想修改 Tr(通过乘以附加矩阵),以便在转换为 A 之后,点围绕每个轴旋转和缩放 thetascale坐标系“B”。

知道这是否可行吗?

T_scale = [scale_x 0       0        0
           0       scale_y 0        0
           0       0       scale_z  0
           0       0       0        1]

T_i(theta) = [R_i(theta) [0; 0; 0]
              [0 0 0]    1        ]


T = Tr * T_scale * T_z(theta_z) * T_y(theta_y) * T_x(theta_x)

R_i(theta)wikipedia

定义

如果你有AB的4×4变换矩阵为

      | R_A  t_A |           | R_B  t_B |
T_A = |          |     T_B = |          |
      |  0    1  |           |  0    1  |

然后找到 A -> B

的相对变换
T_AB = inv(T_B)*T_A

这被解释为本地-->A 的全局,然后是 B 的全局-->本地。