resume lookat what to change in furture

This commit is contained in:
hyzboy 2024-03-12 22:29:40 +08:00
parent 15baf1ecbd
commit a29a35ecea
2 changed files with 36 additions and 0 deletions

View File

@ -75,6 +75,13 @@ namespace hgl
float aspect_ratio,
float znear,
float zfar);
/**
* lookat变换矩阵
* @param eye
* @param target
* @param up
*/
Matrix4f lookat(const Vector3f &eye,const Vector3f &target,const Vector3f &up);
inline Matrix4f translate(const Vector3f &v)
{

View File

@ -102,4 +102,33 @@ namespace hgl
0.0f
);
}
Matrix4f lookat(const Vector3f &eye,const Vector3f &target,const Vector3f &up)
{
Vector3f forward=normalize(target-eye);
Vector3f right=normalize(cross(forward,up));
Vector3f nup=cross(right,forward);
return Matrix4f( right.x,
nup.x,
-forward.x,
0.0f,
right.y,
nup.y,
-forward.y,
0.0f,
right.z,
nup.z,
-forward.z/2.0f,
0.0f,
-dot(eye,right ),
-dot(eye,nup ),
dot(eye,forward),
1.0f
);
}
}//namespace hgl