Eigen::Matrix4f get_projection_matrix(float eye_fov, float aspect_ratio,
float zNear, float zFar)
{
// Students will implement this function
Eigen::Matrix4f projection = Eigen::Matrix4f::Identity();
//由zNear和eye_fov求高度
float height=tan(eye_fov/2)*abs(zNear)*2.0;
//由寬高比求寬度
float width = aspect_ratio*height;
//縮放到正則立方體
projection<<2.0/width,0,0,0,0,2.0f/height,0,0,0,0,2.0f/(zFar-zNear),0,0,0,0,1;
//將立方體中心平移到原點(xy方向無需平移)
Eigen::Matrix4f tmp=Eigen::Matrix4f::Identity();
tmp<<1,0,0,0,
0,1,0,0,**//;**
0,0,1,-(zNear+zFar)/2.0,
0,0,0,1;
projection=projection*tmp;
//進行遠平面的拉伸
tmp<<zNear,0,0,0,
0,zNear,0,0,
0,0,zNear+zFar,-zNear*zFar,**//;**
0,0,1,0;
projection=projection*tmp;
return projection;
}