【转】D3DXMatrixPerspectiveFovLH参数fovy
2016-01-25 16:26
561 查看
1:透视投影矩阵的说明
D3DXMATRIX * D3DXMatrixPerspectiveFovLH( D3DXMATRIX * pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf);最难理解的参数:fovy
通过调用D3DXMatrixPerspectiveFovLH得到的矩阵为
xScale 0 0 0
0 yScale 0 0
0 0 zf/(zf-zn) 1
0 0 -zn*zf/(zf-zn) 0
where:
yScale = cot(fovY/2)
xScale = yScale / aspect ratio
该矩阵的推导过程我们不必关心,否则要d3dx干嘛?
经过推导,假设空间中一点P( x, y,z,1).那么经过投影变换后新的坐标为
P`( x*xScale, y*yScale, z*zf/(zf-zn) – zn*zf(zf-zn), z ), 这时得到的坐标是齐次空间坐标,应映射到三维空间坐标。 同时除以z
我们还要找到角度和点位置某种形象的关系,现在看来z和角度fovy无关
一般我们会把fov设定在0-PI/2之间也就是0-90度。Fovy/2处于0-45度 也就是说 x和y是随着fovy变大而减小的。如果愿意的话可以画一张图。。。
那我们就知道了这样一个事实――》假设一个立方体 如果我们设定fovy为PI/6时看到的大小为cube1,那么fovy设定为PI/3时的大小cube2 应有 cube1 > cube2
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/allenhiman/archive/2009/02/21/3918323.aspx
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(1804) | 评论(0) | 转发(0) |
0
上一篇:【转】D3DXMatrixPerspectiveFovLH函数详解
下一篇:【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
相关热门文章
关于ip_conntrack跟踪连接满导...
基础之AWK
批处理同时ping多个IP文件...
expdp&impdp只导出表结构的方...
利用进程信息追查内存泄漏...
test123
编写安全代码——小心有符号数...
使用openssl api进行加密解密...
一段自己打印自己的c程序...
sql relay的c++接口
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
D3DXMATRIX * D3DXMatrixPerspectiveFovLH( D3DXMATRIX * pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf);最难理解的参数:fovy
通过调用D3DXMatrixPerspectiveFovLH得到的矩阵为
xScale 0 0 0
0 yScale 0 0
0 0 zf/(zf-zn) 1
0 0 -zn*zf/(zf-zn) 0
where:
yScale = cot(fovY/2)
xScale = yScale / aspect ratio
该矩阵的推导过程我们不必关心,否则要d3dx干嘛?
经过推导,假设空间中一点P( x, y,z,1).那么经过投影变换后新的坐标为
P`( x*xScale, y*yScale, z*zf/(zf-zn) – zn*zf(zf-zn), z ), 这时得到的坐标是齐次空间坐标,应映射到三维空间坐标。 同时除以z
我们还要找到角度和点位置某种形象的关系,现在看来z和角度fovy无关
一般我们会把fov设定在0-PI/2之间也就是0-90度。Fovy/2处于0-45度 也就是说 x和y是随着fovy变大而减小的。如果愿意的话可以画一张图。。。
那我们就知道了这样一个事实――》假设一个立方体 如果我们设定fovy为PI/6时看到的大小为cube1,那么fovy设定为PI/3时的大小cube2 应有 cube1 > cube2
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/allenhiman/archive/2009/02/21/3918323.aspx
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(1804) | 评论(0) | 转发(0) |
0
上一篇:【转】D3DXMatrixPerspectiveFovLH函数详解
下一篇:【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
相关热门文章
关于ip_conntrack跟踪连接满导...
基础之AWK
批处理同时ping多个IP文件...
expdp&impdp只导出表结构的方...
利用进程信息追查内存泄漏...
test123
编写安全代码——小心有符号数...
使用openssl api进行加密解密...
一段自己打印自己的c程序...
sql relay的c++接口
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
- syaWedoceD.91
- 【WC】成都七中集训
- HDOJ 2047 阿牛的EOF牛肉串
- CodeForces 612B HDD is Outdated Technology
- 小科普:到底什么是BFC、IFC、GFC和FFC,次奥?
- 87.Summary Ranges
- 禁用select下拉方法
- 激发程序员创意的6本书
- 使用WinINet发送HTTP请求并获取数据[原]
- 【转】位运算应用口诀和实例
- 【转】D3DXMatrixPerspectiveFovLH函数详解
- 【转】D3DXMatrixPerspectiveFovLH参数fovy
- 【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
- 【转】C/C++字节对齐算法
- fstream和stringstream之间的转换
- 【转】协议适配器错误(ORA-12560: TNS:protocol adapter error)
- oracle 10g sqlplus,PL SQL Developer,character中文乱码解
- 【转】 IntelliJ Idea 常用快捷键列表
- 【转】C++类的实例分布