正交投影和透视投影

 投影变换就是要确定一个取景体积,其作用有两个:

    1). 确定物体投影到屏幕的方式,即是透视投影还是正交投影。

    2). 确定从图象上裁剪掉哪些物体或物体的某些部分。

    投影变换包括透视投影和正交投影(平行投影)。

  • 透视投影

    透视投影的示意图如下,其取景体积是一个截头锥体,在这个体积内的物体投影到锥的顶点,用glFrustum()函数定义这个截头锥体,这个取景体积可以是不对称的,计算透视投影矩阵M,并乘以当前矩阵C,使C=CM

 

 

      图5-1-11 透视投影示意图

 

 

 

  • 正交投影

 

    正交投影的示意图见下:其取景体积是一个各面均为矩形的六面体,用glOrtho()函数创建正交平行的取景体积,计算正交平行取景体积矩阵M,并乘以当前矩阵C,使C=CM

 

    void glOrtho(Gldouble left,Gldouble right,Gldouble bottom,Gldouble top,Gldouble near,Gldouble far);

 

    该函数以正交投影矩阵乘当前矩阵。

 

 

       图5-1-12 正交投影示意图

 

 

 


 

    在通过视图造型矩阵和投影矩阵变换场景中对象的顶点后,任何位于取景体积外的顶点都被裁剪掉。除此之外,还可指定附加的任意位置的裁剪面,对场景中的物体作进一步的裁剪选择。

 


 

转载于:https://www.cnblogs.com/zyx2007/archive/2012/03/21/2409275.html

### MATLAB 中实现正交投影透视投影 #### 正交投影 在计算机图形学中,正交投影是一种线性变换,用于将三维空间中的物体投射到二维平面上而不改变其比例。这种类型的投影通常适用于技术绘图其他需要保持尺寸精度的应用。 为了在 MATLAB 中创建一个简单的正交投影效果,可以通过设置视点位置来调整视角,并利用 `view` 函数指定观察角度。对于更复杂的场景,则可能需要用到摄像机属性控制,比如通过修改 CameraPosition, CameraTarget 等参数来进行精确配置[^1]。 下面是一段展示如何应用正交投影的例子: ```matlab % 创建测试数据集 [x,y,z] = peaks; figure; subplot(1,2,1); surf(x,y,z); axis equal tight; grid on; title('Original Surface'); % 设置为正交投影模式 camproj(gca,'orthographic'); view(-37.5,30); subplot(1,2,2); surf(x,y,z); axis equal tight; grid on; title('Orthographic Projection'); ``` 这段代码先绘制了一个表面图作为对比对象,接着在同一窗口的不同子图里展示了启用正交投影后的变化情况。 #### 透视投影 相比之下,透视投影能够模拟人类视觉系统的自然感知方式——近大远小的效果。这使得渲染出来的图像看起来更加真实生动。同样地,在 MATLAB 中也可以很方便地切换至透视投影模式,只需更改当前轴的相机投影类型即可完成转换[^2]。 以下是关于怎样执行透视投影的一个实例: ```matlab % 继续使用之前的测试数据集 [x,y,z] figure; subplot(1,2,1); surf(x,y,z); axis equal tight; grid on; title('Original Surface'); % 切换到透视投影模式 camproj(gca,'perspective'); view(-37.5,30); subplot(1,2,2); surf(x,y,z); axis equal tight; grid on; title('Perspective Projection'); ``` 这里再次采用了相同的表面数据源,但在第二个子图部分启用了透视投影选项,从而产生了不同的显示风格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值