要从包含平移、旋转和缩放的矩阵中提取仅包含平移和旋转的矩阵,您需要对原矩阵进行一些操作。原矩阵通常是一个3x3或4x4的矩阵。
对于3x3矩阵:
原3x3矩阵的形式如下:
1 | | a b tx | |
步骤:
提取旋转部分(左上2x2子矩阵):
1
2| a b |
| c d |计算缩放因子(可以使用行向量的范数或列向量的范数):
1
s = sqrt(a^2 + c^2) = sqrt(b^2 + d^2)
将旋转部分归一化:
1
2| a/s b/s |
| c/s d/s |构建新的3x3矩阵,包含平移分量:
1
2
3| a/s b/s tx |
| c/s d/s ty |
| 0 0 1 |
对于4x4矩阵:
原4x4矩阵的形式如下:
1 | | a b c tx | |
步骤:
提取旋转部分(左上3x3子矩阵):
1
2
3| a b c |
| d e f |
| g h i |计算缩放因子(可以使用行向量的范数或列向量的范数):
1
2
3sx = sqrt(a^2 + d^2 + g^2)
sy = sqrt(b^2 + e^2 + h^2)
sz = sqrt(c^2 + f^2 + i^2)将旋转部分归一化:
1
2
3| a/sx b/sy c/sz |
| d/sx e/sy f/sz |
| g/sx h/sy i/sz |构建新的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 |
这些步骤可以帮助您从包含平移、旋转和缩放的矩阵中提取仅包含平移和旋转的矩阵。