计算机图形学 学习笔记(五):多边形裁剪(Suther land-Hodgeman),文字裁剪
来源:互联网 发布:ubuntu 笔记本 编辑:程序博客网 时间:2024/06/08 16:17
接上文 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky
光栅图形学算法
3.4 多边形裁剪
之前上一篇文章中,我们介绍了直线段的裁剪算法。现在我们要对多边形进行裁剪,如果还是使用直线段的裁剪算法,我们会得到一系列不连续的直线段。如下所示:
而我们想要得到的结果或者说应该得到的结果,如下所示:
多边形裁剪算法的输出的应该是裁剪后的多边形边界的顶点序列。那么我们需要构造一个能产生一个或多个封闭区域的多边形裁剪算法。
Suther land-Hodgeman 多边形裁剪
算法思想:将多边形作为一个整体,每次用窗口的一条边对要裁剪的多边形和中间结果多边形进行裁剪,体现一种分而治之的思想。
例子:用窗口的左边界进行裁剪,左图是未被裁剪过的,右图是裁剪后的图形。
再用裁剪窗口的下边界进行裁剪。
从裁剪得到的结果,可发现多边形的顶点由两部分组成:
- 落在可见一侧的原多边形顶点
- 多边形的边与裁剪窗口边界的交点
根据多边形每一边与窗口边所形成的位置关系,沿着多边形依次处理顶点会遇到四种情况:
(1)第一点 S 在不可见侧面,而第二点 P 在可见侧。处理方法:交点 I 和点 P 均被加入到输出顶点表中。
(2)S 和 P 都在可见侧。处理方法:P 被加入到输出顶点表中
(3)S 在可见侧,而 P 在不可见侧。处理方法:交点 I 被加入到输出顶点表中
(4)如果 S 和 P 都在不可见侧。处理方法:输出顶点表中不增加任何顶点
在窗口的一条裁剪边界处理完所有顶点后,其输出顶点表将用窗口的下一条边界继续裁剪。
例子:
Suther land-Hodgeman 算法不足之处
利用 Suther land-Hodgeman裁剪算法对凸多边形进行裁剪可以获得正确的裁剪结果,但是对于凹多边形则不行,如下图:
多余线段产生的原因是:因为 Suther land-Hodgeman裁剪算法 裁剪后的仍然是多边形。
3.5 文字裁剪
屏幕上显示的不仅仅是多边形和直线等,还显示字符。字符如何来处理?
字符并不是由直线段组成的。文字裁剪包括以下几种:
- 串精度裁剪
- 字符精度裁剪
- 笔划/像素精度裁剪
串精度裁剪
当字符串中的所有字符都在裁剪窗口内时,就全部保留它,否则舍弃整个字符串。
字符精度裁剪
在进行裁剪时,任何与窗口有重叠或落在窗口边界以外的字符都被裁剪掉。
笔划/像素精度裁剪
将笔划分解成直线段对窗口做裁剪。需要判断字符串中各字符的哪些像素、笔划的哪一部分在窗口内。保留窗口内的部分,裁剪掉窗口外的部分。
直线裁剪算法 Liang-Barsky 作业参考答案
题目:
答案:
- 计算机图形学 学习笔记(五):多边形裁剪(Suther land-Hodgeman),文字裁剪
- 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky
- 计算机图形学(六)多边形裁剪Sutherland-Hodgeman算法讲解与源代码
- Sutherland-Hodgeman多边形裁剪(转载)
- Sutherland-Hodgeman多边形裁剪
- 计算机图形学 - 多边形裁剪算法
- 计算机图形学----直线与多边形的裁剪
- 计算机图形学-直线裁剪(Cohen-Sutherland编码裁剪算法)
- 计算机图形学(6)二维裁剪算法
- 裁剪算法(计算机图形学)
- 计算机图形学(五)线段的中点分割裁剪算法讲解与源代码
- qt 笔记五(裁剪)
- (13)裁剪之多边形裁剪
- 计算机图形学 - 线段裁剪 - Liang Barsky算法(梁友栋算法)
- 《计算机图形学》实验四:裁剪
- 计算机图形学 学习笔记(三):多边形的区域填充算法,反走样算法
- 图形学学习笔记4——平面图形裁剪
- 矢量图的多边形裁剪(作者:陈轶)
- 交换排序(2)--快速排序3种实现方案及其优化
- C++引用/枚举/typedef/头文件/预编译器/自定义头文件
- stl-set
- Scala Extractor Objects
- [数论] LOJ #510. 「LibreOJ NOI Round #1」北校门外的回忆
- 计算机图形学 学习笔记(五):多边形裁剪(Suther land-Hodgeman),文字裁剪
- java的文件xml读取,4种方式的不同
- centos安装THEFUCK
- 牛客《剑指Offer》 -- 斐波那契数列
- C#程序保留两位小数
- elk安装流程
- Oracle数据库笔记之各种连接及合并查询
- QT在控制台下实现TCP网口通信
- python实现前向匹配中查找最大长度的最高重复模式的子字符串