Я пишу 3D-движок и наткнулся на алгоритм LookAt, описанный в документации 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) 1
Теперь я понимаю, как это работает на стороне вращения, но я не совсем понимаю, почему он помещает компонент трансляции матрицы в эти скалярные произведения. Изучив его немного, кажется, что он регулирует положение камеры на небольшую величину на основе проекции новых базовых векторов на положение глаза / камеры.
Вопрос в том, зачем это нужно делать? Что это дает?