- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
计算机图形学图形填充;图形分类
线段图形
直线、圆以及自由曲线等,用于表现物体的几何轮廓
实面积图形
封闭图形,在其封闭的区域内具有相同的颜色。既表现了物体的几何轮廓,也反映了物体表面的色彩。
在计算机屏幕上表现为:处于封闭图形内部区域的屏幕象素具有相同的亮度和色彩。;实面积图形的表示
顶点表示法
以封闭多边形的顶点坐标数据(或者,闭合曲线的特征数据)来描述实面积图形;其内部以用户指定的颜色填充;基本填充方法:多边形填充。
点阵表示法
以点阵数组的方式描述实面积图形;图形的内部以用户指定的颜色包围或者组成,易于面着色;基本填充方法:种子填充。;多边形分为凸多边形、凹多边形、含内环的多边形。
注意:凹、凸点的判断;实区域填充算法;多边形的填充原理
多边形填充的任务:把多边形的顶点表示转换为点阵表示。即,找出所有位于多边形内部的像素点,以所要求的像素值画这些像素点。
可能的做法:
遍历屏幕上的像素点,判断是否在多边形内部,然后填充。
问题:逐点判断,速度太慢;不是所有对多边形都容易作内部判断。
关键:寻找一种快速而通用的内部判断方法。
;扫描线:点阵图形在屏幕上的像素点,可以认为是由位于一条条水平直线上的像素点构成的.
对每一条切割多边形的扫描线,决定扫描线上哪些像素点是在多边形内部,并对这些相应的像素点赋以合适的值表示某种颜色或灰度,就能对整个多边形进行扫描转换。
;一条扫描线与一个多边形的关系:相交或不相交.若相交,则直线被多边形分割成不同的直线段,其中一些在多边形内,另外一些在多边形外.并且这些多边形内外的直线段大多数情况下相互交替出现.;扫描线连贯性(scanlinecoherence):当像素点位于多边形内(外)的直线段上时,它就位于多边形内(外).也就是说,与多边形相交的一条扫描线上总会有一组相互相连的像素点都位于多边形之内。
每一个像素点—?像素点所在的直线段;分析
从扫描线的一端出发,当前在多边形外,当沿扫描线前进到达与多边形的第一个交点时,就进入多边形内;由于扫描线的另一端??在多边形外,继续沿扫描线前进一定会走出多边形内部,于是一定会遇到第二个交点。这时可以看到,第一和第二个交点之间的直线段就位于多边形内;
如果没有更多的交点,则该扫描线上只有一段直线段位于多边形内。否则,继续沿扫描线前进,此时位于多边形外,直到遇到第三个交点后,重新进入多边形内。类似前面的分析,一定有第四个交点。于是第三,第四个交点给出的直线段就位于多边形内;
如果还有更多的交点,就重复这样的过程,直到没有新的交点为止。因为交点个数是有限的,这一过程是一定可以结束的。;射线交点计数的方法:
从多边形外一点,引水平射线(即扫描线)穿过多边形,记录扫描线与多边形边的交点个数情况,当交点数为奇数时,扫描线处在多边形内部,当交点数为偶数时,扫描线处在多边形外部。多边形与同一扫描线的交点按x方向大小顺序排列,并两两配对,则可得扫描线在多边形内的直线段,从而可实现多边形填充。;奇点问题
奇点:当扫描线与多边形的交点是顶点。
如果奇点存在,上述判别过程就不能正确地进行
多边形顶点的潜在问题
这个问题与交点的求解方法有关.
所有交点通过扫描线所在直线依次与多边形各边所在直线段求解出。如果某个交点恰恰是其中一个边的端点:重复计算。
水平边问题
水平边重合于某一条扫描线:无数多交点,不予处理
;;奇点的处理;;总结:简单地数交点不能解决所有的问题,需要补充规则完善此射线交点计数法:
(1)忽略多边形的水平边;
(2)与多边形的极值点端点相交时,该点算做两个;
(3)其余的非极值点端点,仅计算一次。
实际操作任务:
(1)判断水平边;
(2)判断奇点;
在求交点过程中,因为是依次计算扫描线与各条边的交点,因此奇点也自然被计算两次。但造成另一个问题是非极值点的顶点也被计算了两次。
;
对此问题的一种处理办法是,计算前,先将每条斜边的低端点在y方向上缩小一个屏幕坐标单位,这将忽略极小值 ;;;扫描线算法步骤如下:
(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)。
(2)从y=ymin到y=ymax,每次用一条扫描线进行填充。
(3)对一条扫描线填充的过程可分为四个步骤:
a、求交:计算扫描线与多边形各边的交点;
b、排序:把所有交点按递增顺序进行排序;
c、交点配对:第一个与第二个,第三个与第四个等等,每对交点就
代表扫描线与多边形的一个相交区间;
d、区间填色:把这些相交区间内的像素置成不同于背景色的填充色。
;;扫描线算法特点;填
文档评论(0)