码迷,mamicode.com
首页 > Windows程序 > 详细

WorldWind源码剖析系列:视景体类

时间:2015-05-31 23:06:36      阅读:366      评论:0      收藏:0      [点我收藏+]

标签:

PluginSDK中的视景体类Frustum是三维计算机图形学中的概念,主要用来描述透视投影的过程。三维计算机图形学中关于三维物体的渲染,Direct3D和OpenGL都是先通过对现实世界中的场景先进行世界变换,再通过设置观察矩阵以在场景中安置一个虚拟相机,构建一个视景体来裁剪场景的可见区域,然后在通过投影变换(平行投影或透视投影),获取三维场景的“像”,最后再通过视口变换,将场景的“像”光栅化输出到二维显示屏幕上。如下图所示。

技术分享 

其中投影变换主要有透视投影和平行投影两类。视景体类Frustum正是用来描述投影变换过程中的透视投影的。如下图所示。其关键参数主要有:Y向视场角、远裁剪平面、近裁剪平面、投影窗口纵横比。由这些因子可以构造一个透视投影参与三维物体渲染运算。

 技术分享

视景体类Frustum类的类图如下。

技术分享 

字段planes数组用6个平面来描述视景体的6个边界平面。

Update方法用给定的矩阵对象来更新视景体的6个边界平面。用到了Microsoft.DirectX的平面Plane结构体、Vector3类和矩阵Matrix类。

Intersects方法用来测试视景体对象与输入的外包围球是否相交。其重载形式用来测试是否与外包围盒相交。

Contains方法用来测试视景体对象是否完全包含外包围盒。

ContainsPoint方法用来测试视景体对象是否完全包含一个点向量。

WorldWind源码剖析系列:视景体类

标签:

原文地址:http://www.cnblogs.com/rainbow70626/p/4542813.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!