私は 3D エンジンを書いている最中で、DirectX のドキュメントで説明されている LookAt アルゴリズムに出くわしました。
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
これで、回転側でどのように機能するかがわかりましたが、マトリックスの平行移動コンポーネントをこれらの内積にする理由はよくわかりません。少し調べてみると、目/カメラの位置への新しい基底ベクトルの投影に基づいて、カメラの位置を少し調整しているようです。
問題は、なぜこれを行う必要があるのかということです。それは何を達成しますか?