投影

MATLAB支持用正交投影和透视投影两种投影方法显示三维图形。选择哪种方法与要显示的图形的类型有关:

正交投影 将视景体投影成一个成直角的平行六面体(即对边平行的盒子)。与相机的相对距离不影响对象的大小。当保持对象的实际大小和对象之间的角度很重要的时候,使用这种投影类型很有用。

透视投影 将视景体投影成一个台体,它就象顶部被截掉的金字塔。距离远时,对象会显得更小。希望显示真实对象的真实视图时,多使用这种投影方法。

默认时,MATLAB使用正交投影。可以用camproj命令设置投影类型。

默认时,MATLAB会通过调整CameraPosition,CameraTarget和CameraViewAngle属性将相机放到场景中心,并包括坐标系中的所有图形对象。如果放置相机时图形对象在相机后面,则坐标系的Projection属性和图形窗口对象的Renderer属性都会影响场景的显示。表5-4概括了投影类型和渲染方法之间的交互。

表5-4 投影类型与渲染方法之间的交互效果

正 交 投 影 透 视 投 影
z-buffer渲染法 CameraViewAngle属性确定CameraTarget属性对应目标点处场景的宽度 CameraViewAngle属性确定CameraPosition属性对应点到无限远处的场景宽度
画家渲染法 所有对象显示时不考虑CameraPosition属性 如果图形对象在相机后面,不推荐使用这种投影方式

使用正交投影和z-buffer渲染器时,相机前面的任何东西都是可见的。使用透视投影时,看到的范围是相机视角对应圆锥体内的范围。

对于在三维空间中移动相机的情况,画家算法不如z-buffer渲染法合适,因为MATLAB不会沿视轴进行裁剪。用画家算法进行正交投影会导致不管相机在什么位置,场景中的所有对象都可见的现象产生。