7.9日志

该段代码实现了一个3D图形学中的投影矩阵构造过程,涉及到眼视角、宽高比、近裁剪面和远裁剪面参数。首先计算了基于眼视角的高度和宽度,然后进行立方体缩放和平移,最后执行远平面拉伸,确保正确的3D到2D转换。
摘要由CSDN通过智能技术生成

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;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值