我正在尝试创建一个函数,该函数从描述位置的顶点和描述第一个位置的对象正在查看的点的另一个顶点返回旋转矩阵。到目前为止,我有以下代码:
const Matrix4 Matrix4::createRotation(const Vertex& pos, const Vertex& lookat)
{
Vector3 vz = lookat - pos;
vz.normalize();
Vector3 vx = Vector3::cross(Vector3( 0, 1, 0 ), vz);
vx.normalize();
Vector3 vy = Vector3::cross(vz, vx);
Matrix4 rotation ( vx.x, vy.x, vz.x, 0,
vx.y, vy.y, vz.y, 0,
vx.z, vy.z, vz.z, 0,
0, 0, 0, 1);
return rotation;
}
目前这产生了错误的结果,我很确定它位于旋转 Matrix4 变量的构造函数中。
该函数将与逆平移矩阵一起使用来构建相机的视图矩阵。
谁能向我解释如何做到这一点?