透视投影矩阵gluPerspective的使用说明
来源:互联网 发布:js设置input背景颜色 编辑:程序博客网 时间:2024/04/29 16:21
透视投影矩阵gluPerspective的使用说明
gluPerspective使用之前需要将glMatrixMode设置为GL_PROJECTION,设置gluPerspective时候需要提供Y方向的视角--fovy,视锥的纵横比--aspect,视锥的近平面坐标--near,视锥的远平面坐标--far。下面详细说明下这几个参数的意义。
fovy是一个角度,此角度以z轴为对称轴(被z轴平分吧);
aspect指的是视锥平面(垂直z轴)的宽高比;
近平面垂直z轴,near是近平面到坐标系中心的距离;
远平面垂直z轴,far是远平面到坐标系中心的距离;
需要注意的是在设置视锥体的时候是以独立的坐标系作为参照的,在设置的时候可以先认为同世界坐标系没有关系,比如说设置:gluPerspective(27,1, 5,100),这个意思是说在设置视锥体的参考坐标系下,fovy为27°(z轴对称),近平面距离中心的距离为5(垂直z轴),远平面距离中心的距离为100(垂直z轴)。然后此设置在世界坐标系下的意义为:fovy为27°(lookat-eye轴对称),近平面距离eye的距离为5(垂直lookat-eye轴),远平面距离eye的距离为100(垂直lookat-eye轴)。
由上说明可见投影矩阵的最终的效果受到lookat矩阵的影响,下面说明如何设置物体的位置,使物体能够出现在视锥体中(其实应该是物体在视锥体才能被看到啊,但是初学者往往是不知道如何正确把物体放入视锥体中观察)。
其实根据上述对视锥体的设置说明可以知道,在view坐标系(lookat矩阵转换后的坐标系)下,只要物体放置在距离eye,不妨设物体为p,距离eye记为d,只要d> near && d < far那么这个物体是可能会被看见的,为什么说可能呢,因为还受到fovy的影响,如果|p.y| >|d*tan(fovy)| 那么物体也是看不见的。同理还需要考虑fovx的情况,fovx可以根据fovy和aspect求出。
相关公式:
1.根据fovy求fovx
fovx = 2 * actan(aspect * tan(fovy/2));
2.根据窗口宽度width和窗口距离distance求fovy
fovy = 2 * actan(width / (2 * distance));
- 透视投影矩阵gluPerspective的使用说明
- OpenGL透视投影gluPerspective
- OpenGL透视投影gluPerspective
- OpenGL透视投影gluPerspective
- OpenGL透视投影gluPerspective
- 透视投影矩阵的构建
- opengl投影透视矩阵的个人总结
- 26 WebGL的透视投影矩阵
- 透视投影矩阵
- 透视投影矩阵
- 透视投影矩阵
- 透视投影矩阵推导
- 透视投影矩阵推导
- opengles透视矩阵投影原理
- DIRECT3D中透视投影矩阵的计算(已删除)
- 透视投影的推导
- 简单的透视投影
- 平行投影与透视投影的关系与统一的矩阵表示
- 关于GOOGLE的搜索语法
- Scalar Visualization
- spring2.5的配制模板beans.xml
- 链表
- asp.net Forms表单验证(角色)
- 透视投影矩阵gluPerspective的使用说明
- 感受印度的软件业
- XP下通过虚拟机安装Redlinux9.0(iso)
- AOCP---写在前面鼓励自己的话
- 传智播客银联项目,模拟跨行取款
- sql 存储大于8000 的解决方法
- vs2008运行WEB程序时提示无法启动程序"http://localhost:12345/index.aspx".有更多数据可用
- 编程之路┊一个程序员走过的路
- sql 中查找表的外键