【问题标题】:Scale and rotate 3D points with respect to axis of a different coordinate system相对于不同坐标系的轴缩放和旋转 3D 点
【发布时间】:2017-03-07 19:41:00
【问题描述】:

我在坐标系 B 中有一组 3D 点,我想围绕坐标系 B 的每个轴旋转和缩放特定角度 theta 和特定缩放因子 scale,然后转换它们到不同的坐标系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 之后,这些点围绕坐标系“B”的每个轴旋转和缩放thetascale

知道这是否可能吗?

【问题讨论】:

  • 您能详细说明一下吗?也许可以举个例子?是否要将点转换为 B,执行旋转和缩放,然后转换回 A?
  • 这组 3D 点是图像吗?你想在x,y 轴还是x,y,z 轴上旋转?如果要进行 3D 旋转,则需要 theta1theta2
  • @NicoSchertler 我从 B 中的点开始。我想围绕 B 轴执行旋转和缩放,然后将点转换为 A。我已经编辑了我的问题以使其更清楚。

标签: matlab math 3d geometry coordinate-systems


【解决方案1】:
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 定义

【讨论】:

    【解决方案2】:

    如果你有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 的本地。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      相关资源
      最近更新 更多