三维观察

本文介绍了3D图形从世界坐标系到观察坐标系的转换方法,包括平移和旋转矩阵的应用;详细解释了3D物体到二维平面的两种投影方式——平行投影和透视投影,并给出OpenGL中的实现函数glOrtho和平行投影、glPerspective和透视投影;最后讨论了观察平面位置及裁剪窗口的设置。

1. 世界坐标系到观察坐标系的转换  

坐标系的转换需要进行矩阵的平移和旋转。

2.  投影

3D物体到二维平面的投影分为平行投影和透视投影。

平行投影中,投影平面的x,y 坐标和三维的 x,y 坐标相等, z 坐标投影平面的 z 坐标值

透视投影就要根据观察点和物体和投影平面的距离来调整x, y 坐标。列出空间点到观察点的直线的参数方程,根据投影平面点的 z 坐标等于投影平面的 z 坐标值,可以计算出空间点在投影平面的 x, y 坐标值。

把得到的方程转换为矩阵形式。就可以用矩阵进行透视投影的计算。

glOrthon 平行投影

glPerspective 透视投影

3.  观察平面的位置

Opengl中观察平面垂直于观察坐标系的 z 轴

4.  裁剪窗口的位置

裁剪窗口为棱台的近平面,坐标可以随意设置。 

5.  观察参考点

观察参考点的位置一般选在观察坐标系的z 轴上。

如果观察参考点和裁剪平面的中心的连线与裁剪平面垂直,称为对称棱台。如果不垂直,就称为斜棱台。

Opengl把观察参考点设置在观察坐标系原点。

Opengl中的 glFrustum 函数是通用的透视投影函数,可以设置对称棱台和斜棱台。

glFrustum(xwmin, xwmax, ywmin, ywmax, dnear, dfar)

前4 个参数是设定近平面上裁剪窗口的坐标,后两个参数必须为正数(有疑惑), 表示坐标原点(观察点)到近远平面的距离。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值