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

时间:2017-03-07 19:41:01

标签: matlab math 3d geometry coordinate-systems

我在坐标系B中有一组3D点,我想围绕坐标系的每个轴旋转和缩放特定角度theta和某个比例因子scale { {1}}然后将它们转换为不同的坐标系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旋转并缩放,theta关于每个轴坐标系“B”。

知道这是否可行?

2 个答案:

答案 0 :(得分:3)

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)

wikipedia

定义的R_i(theta)

答案 1 :(得分:0)

如果您有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