可以看到 D3DXMatrixLookAtLH 的说明中是用如下的说明来解释如何构造这个矩阵的
zaxis = normal(At -
Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) l
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) l
实际上其实这个矩阵如果说得更明白些应该是
位移矩阵:
1 0 0 0
0 1 0 0
0 0 1 0
-eye.x -eye.y -eye.z 1
0 1 0 0
0 0 1 0
-eye.x -eye.y -eye.z 1
和轴变换矩阵
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
0 0 0 l
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
0 0 0 l
相乘的结果。