Cálculo de uma matriz LookAt
Estou escrevendo um mecanismo 3D e me deparei com o algoritmo LookAt descrito na documentação do DirectX:
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
Agora eu entendo como funciona no lado da rotação, mas o que não entendi direito é por que ele coloca o componente de conversão da matriz nesses produtos de ponto. Examinando um pouco, parece que ele está ajustando a posição da câmera em uma pequena quantidade, com base em uma projeção dos novos vetores de base na posição do olho / câmera.
A questão é por que ele precisa fazer isso? O que isso faz?