从包含平移、旋转和缩放的矩阵中提取仅包含平移和旋转的矩阵

要从包含平移、旋转和缩放的矩阵中提取仅包含平移和旋转的矩阵,您需要对原矩阵进行一些操作。原矩阵通常是一个3x3或4x4的矩阵。

对于3x3矩阵:

原3x3矩阵的形式如下:

1
2
3
| a  b  tx |
| c d ty |
| 0 0 1 |

步骤:

  1. 提取旋转部分(左上2x2子矩阵):

    1
    2
    | a  b |
    | c d |
  2. 计算缩放因子(可以使用行向量的范数或列向量的范数):

    1
    s = sqrt(a^2 + c^2) = sqrt(b^2 + d^2)
  3. 将旋转部分归一化:

    1
    2
    | a/s  b/s |
    | c/s d/s |
  4. 构建新的3x3矩阵,包含平移分量:

    1
    2
    3
    | a/s  b/s  tx |
    | c/s d/s ty |
    | 0 0 1 |

对于4x4矩阵:

原4x4矩阵的形式如下:

1
2
3
4
| a  b  c  tx |
| d e f ty |
| g h i tz |
| 0 0 0 1 |

步骤:

  1. 提取旋转部分(左上3x3子矩阵):

    1
    2
    3
    | a  b  c |
    | d e f |
    | g h i |
  2. 计算缩放因子(可以使用行向量的范数或列向量的范数):

    1
    2
    3
    sx = sqrt(a^2 + d^2 + g^2)
    sy = sqrt(b^2 + e^2 + h^2)
    sz = sqrt(c^2 + f^2 + i^2)
  3. 将旋转部分归一化:

    1
    2
    3
    | a/sx  b/sy  c/sz |
    | d/sx e/sy f/sz |
    | g/sx h/sy i/sz |
  4. 构建新的4x4矩阵,包含平移分量:

    1
    2
    3
    4
    | a/sx  b/sy  c/sz  tx |
    | d/sx e/sy f/sz ty |
    | g/sx h/sy i/sz tz |
    | 0 0 0 1 |

这些步骤可以帮助您从包含平移、旋转和缩放的矩阵中提取仅包含平移和旋转的矩阵。