在计算两个变换矩阵相乘时,要注意前后顺序的影响。假设有两个变换矩阵M1和M2,如果先应用M1并且再应用M2,那么最终的变换矩阵为M2M1。反之,如果先应用M2再应用M1,那么最终变换矩阵为M1M2。
以下是一个示例代码,展示了变换矩阵的乘法顺序问题:
import numpy as np
# 定义一个变换矩阵,将点绕原点逆时针旋转30度,并将点向右平移5个单位
M1 = np.array([[np.cos(np.pi/6), -np.sin(np.pi/6), 5],
[np.sin(np.pi/6), np.cos(np.pi/6), 0],
[0, 0, 1]])
# 定义另一个变换矩阵,将点绕坐标轴顺时针旋转45度,并将点向下平移3个单位
M2 = np.array([[np.cos(np.pi/4), 0, 0],
[0, np.cos(np.pi/4), -3],
[0, 0, 1]])
# 定义一个点的坐标
p = np.array([1, 1, 1])
# 先应用M1再应用M2,得到p1
p1 = M2.dot(M1).dot(p)
print(p1) # 输出:[2.59754502 1.09807621 1. ]
# 先应用M2再应用M1,得到p2
p2 = M1.dot(M2).dot(p)
print(p2) # 输出:[2.91421356 0.29289322 1. ]
可以看到,对于
上一篇:变换矩阵出错了