接上文 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky


光栅图形学算法

3.4 多边形裁剪

之前上一篇文章中,我们介绍了直线段的裁剪算法。现在我们要对多边形进行裁剪,如果还是使用直线段的裁剪算法,我们会得到一系列不连续的直线段。如下所示:

而我们想要得到的结果或者说应该得到的结果,如下所示:

多边形裁剪算法的输出的应该是裁剪后的多边形边界的顶点序列。那么我们需要构造一个能产生一个或多个封闭区域的多边形裁剪算法。

Suther land-Hodgeman 多边形裁剪

算法思想:将多边形作为一个整体,每次用窗口的一条边对要裁剪的多边形和中间结果多边形进行裁剪,体现一种分而治之的思想

例子:用窗口的左边界进行裁剪,左图是未被裁剪过的,右图是裁剪后的图形。

再用裁剪窗口的下边界进行裁剪。

从裁剪得到的结果,可发现多边形的顶点由两部分组成

  1. 落在可见一侧的原多边形顶点
  2. 多边形的边与裁剪窗口边界的交点

根据多边形每一边与窗口边所形成的位置关系,沿着多边形依次处理顶点会遇到四种情况:

(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),文字裁剪相关推荐

  1. 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky

    接上文 计算机图形学 学习笔记(三):多边形的区域填充算法,反走样算法 光栅图形学算法 本文主要讲解直线裁剪算法. 裁剪 使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的知识图形 ...

  2. GAMES101-现代计算机图形学学习笔记(作业07)

    GAMES101-现代计算机图形学学习笔记(作业07) Assignment 07 GAMES101-现代计算机图形学学习笔记(作业07) 作业 作业描述 思路 结果 原课程视频链接以及官网 b站视频 ...

  3. 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等

    接上文 计算机图形学 学习笔记(六):消隐算法:Z-buffer,区间扫描线,Warnock,光栅图形学小结 在图形学中,有两大基本工具:向量分析,图形变换.本文将重点讲解向量和二维图形的变换. 5. ...

  4. GAMES101-现代计算机图形学学习笔记(作业02)

    GAMES101-现代计算机图形学学习笔记(作业02) Assignment 02 GAMES101-现代计算机图形学学习笔记(作业02) 作业 作业描述 需要补充的函数 思路 结果 原课程视频链接以 ...

  5. GAMES101-现代计算机图形学学习笔记(作业01)

    GAMES101-现代计算机图形学学习笔记(作业01) Assignment 01 GAMES101-现代计算机图形学学习笔记(作业01) 作业 作业描述 需要补充的函数 思路 结果 原课程视频链接以 ...

  6. 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影)

    接上文 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等 通过三维图形变换,可由简单图形得到复杂图形,三维图形变化则分为三维几何变换和投影变换. 6.1 三维图形几何变换 三维 ...

  7. 计算机图形学学习笔记——Whitted-Style Ray Tracing(GAMES101作业5讲解)

    计算机图形学学习笔记--Whitted-Style Ray Tracing GAMES101作业5讲解 遍历所有的像素生成光线 光线与平面求交 遍历所有的像素生成光线 关于作业五中如何遍历所有的像素, ...

  8. 计算机图形学 学习笔记(九):曲线曲面(一):参数曲线、参数几何代数形式

    接上文 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影) 计算机图形学三大块内容:光栅图形显示(前面已经介绍完了 1-8).几何造型技术.真实感图形显示.光栅图 ...

  9. GAMES101-现代计算机图形学学习笔记(作业03)

    GAMES101-现代计算机图形学学习笔记(作业03) Assignment 03 GAMES101-现代计算机图形学学习笔记(作业03) 作业 作业描述 思路 原课程视频链接以及官网 b站视频链接: ...

最新文章

  1. 科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用
  2. 「澳洋主数据项目」主数据促企业变革
  3. rocketmq 初探(三)
  4. python打印二进制内容_在python中打印出c类型的二进制表示
  5. python之路 day5
  6. 异常:The supplied data appears to be in the Office 2007+ XML
  7. commands moudle on python will replace with subprocess on py3.0
  8. Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系
  9. 矢量数据压缩:道格拉斯普克算
  10. linux常用命令 less,Linux常用基本命令(less)
  11. cat3 utp是不是网线_网线UTP-CAT5、UTP-CAT5e、UTP-cat6产品简介讲解
  12. 微信答题小程序|在线答题系统
  13. node_modules中的.cache文件夹的占用空间越来越大
  14. 软件测试周刊(第47期):要爱具体的人,不要爱抽象的人;要爱生活,不要爱生活的意义。
  15. 戴着人工心脏上脱口秀大会——王十七的充电人生
  16. RecyclerView的canScrollVertically方法踩坑
  17. android 手表解决方案,智能手表解决方案
  18. Redis和消息队列
  19. 限制 input text 只能输入数字
  20. Android 全景视频播放器(VR视频播放器探索二)

热门文章

  1. win10下关闭笔记本自带键盘以及解锁
  2. k8s client-go 程序实现kubernetes Controller Operator 使用CRD 学习总结
  3. python电视剧口碑分析_用Python分析IMDB历届电影票房数据(上)
  4. 【Java】拓扑排序
  5. android ble notify,Android Ble notify功能踩坑
  6. 搜狐Q1财报发布:张朝阳手握四张王牌,关键看怎么打
  7. 虚拟机进不去登陆界面一直转圈
  8. 基于java的餐厅下单系统的实现
  9. matlab语言在天线设计,MATLAB语言在天线设计中的运用.pdf
  10. 笔记本上的 Linux