窗口是指世界坐标系中要显式的区域称,窗口定义了显式的内容
视口是指窗口映射到显示器的区域,视口定义了在什么位置显示
通常将世界坐标系中一部分区域映射到设备坐标系的操作称为观察变换,二维观察变换流水线如下:
模型局部坐标→ 世界坐标 → 观察坐标 -(通过窗口视口描述)→ 规范化观察坐标 → 设备坐标
通常所说的裁剪窗口就是窗口,即世界坐标系中要显示的区域,我们可以选择裁剪窗口的不同形状、大小以及方向来确定裁剪效果,也可以自己实现裁剪算法和变换算法获取特殊形状的裁剪窗口
大多数图形系统将规范化和窗口-视口转换合成一步,先让视口坐标在[0,1]范围内(即让视口位于单位坐标系内),裁剪后将包含视口的单位正方形(规范化视口)映射到输出设备
设窗口内点
![p2](./p2.png =480x)
为了保持视口和窗口中对象相对位置相同,必须满足等比例条件,求解出视口坐标为:
其中系数为:
不难发现,规范化变换的复合变换矩阵为
识别指定区域内或区域外图形部分的过程称为裁剪,裁剪策略包括:
二维裁剪就是判断图形的点
二维裁剪包括了以下几个方面:
裁剪算法有很多种(具体略),多数都是按照裁剪策略中的两种策略:
三维观察和二维类似,都需要裁剪并且流水线基本相同,但不同点在于:
三维观察流水线如下:
模型局部坐标 -[建模变换]→ 世界坐标 -[观察变换]→ 观察坐标 -[投影变换]→ 投影坐标 -[规范化和窗口裁剪]→ 规范化观察坐标 -[视口变换]→ 设备坐标
定义观察点
选定观察物体上一点
投影变换就是将维数为n的点变换成维数小于n的点,常见的投影有:
正投影是投影线垂直于投影平面(即观察平面)的平行投影
正投影裁剪窗口限制了观察坐标系中的x和y的限制,再定义两个近-远裁剪平面构成一个封闭的裁剪体,叫做正投影观察体
注意,投影过程中保留坐标的Z分量,用于可见性检查
下面是从正投影观察体[
斜投影是投影路径与观察平面不垂直的平行投影,斜投影投影坐标为:
记透视投影的汇聚点为投影参考点
其中
原文地址:http://blog.csdn.net/u014030117/article/details/46495679