- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chap5 基本图形生成算法
数值微分法 数值微分法即DDA(Digital Differential Analyzer)算法,是根据直线的微分方程来计算Δx或Δy生成直线的扫描转换算法。 在一个坐标轴上以单位间隔对线段取样, 以决定另一个坐标轴方向上最靠近理想线段的整数值。 数值微分法的本质,是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x、y值。 数值微分法 步骤:给定:两个端点P0(x0,y0)和P1(x1,y1), 则:dx=(x1-x0);dy=(y1-y0); 根据|dx|、|dy|,哪个大,哪个为步长参数: ①当|dx||dy|,即|m|1时, 若x0x1,即直线从左到右,则?x=1, ?y=m 若x0x1,即直线从右到左,则?x=-1, ?y=-m ②当|dx|≤|dy|,即|m|≥1时, 若x0x1,即直线从左到右,则?y=1, ?x=1/m 若x0x1,即直线从右到左,则?y=-1, ?x=-1/m 例:已知:P0(0,0) P1(5,2) dy= y1-y0=2, dx= x1-x0 = 5 d0 =dx-2dy = 1, 令:d1=2dy =4, d2=2(dx - dy)=6 i (xi,yi) di (xi+1,yi+1 ) di+1 0 (0,0) 1 (1,0) di-d1=-3 1 (1,0) -3 (2,1) di+d2=3 2 (2,1) 3 (3,1) di-d1=-1 3 (3,1) -1 (4,2) di+d2=5 4 (4,2) 5 (5,2) 例:已知:P0(0,0) P1(5,2) dy= y1-y0=2, dx= x1-x0 = 5 e0 =-dx = -5, 令:2dy =4, 2dx=10 i (xi,yi) ei e+2dy (xi+1,yi+1 ) e-2dx 0 (0,0) -5 -1 (1,0) 1 (1,0) -1 3 (2,1) -7 2 (2,1) -7 -3 (3,1) 3 (3,1) -3 1 (4,2) -9 4 (4,2) -9 -5 (5,2) 设圆半径R=10,初始点(0,10),d0=1-R=-9 i di 下一个点 di+1 0 -9 (1,10) =di+2Xi+1+1=-6 -6 (2,10) =di+2Xi+1+1=-1 -1 (3,10) =di+2Xi+1+1=6 6 (4,9) =di+2Xi+1-2Yi-1+1=-3 -3 (5,9) =di+2Xi+1+1=8 8 (6,8) =di+2Xi+1-2Yi-1+1=5 5 (7,7) 有效边链表结点的数据结构 x:当前扫描线与边的交点坐标 Ymax:该边所交的最高扫描线号Ymax 1/k:从当前扫描线到下一条扫描线间x的增量 ∵边的连贯性,扫描线的联贯性; ∴只需对当前扫描线的有效边表稍作修改,就可以得到下一条扫描线的有效边表。 进一步改进,使得无须缩短任何边: ①建新边表ET ②将扫描线坐标Y的初值置为ET中非空元素的最小序号 ③置AET为空 ④执行以下步骤,直至ET和AET都为空 把ET中Y信息与AET合并,同时保存AET中按X值实现的排序序列 对于扫描线Y,在一对交点之间填充所需要的像素值 从AET中删除Yi+1≥Ymax的项 对于仍留在AET中的每一项,用x+1/m代替x 检查并保存AET中的各项,按X值排序 使Y增1,成为下一条扫描线的坐标 特点:利用边的连贯性,加速交点的计算 利用AET,排除盲目求交 利用扫描线的连贯性,避免逐点判别 缺点:涉及表的维护和排序,不适合硬件。 求余运算 假定A是给定的正数,则M得余数定义为M=A-M 边缘填充法 当计算机内用n位二进制表示M,A=2n-1, 则M=A-M=A-(A-M)=M。 即对M作偶次求余,运算结果是M; 对M作奇次求余,运算结果是M。 4-连通区域 4向连通区域指的是从区域上一点出发,可通过四个方向,即上、下、左、右移动的组合,在不越出区域的前提下,到达区域内的任意像素。 8-连通区域 从区域内每一像素出发,可通过八个方向,即上、下、左、右、左上、右上、左下、右下这八个方向的移动的组合来到达。 扫描线区域填充算法(扫描线种子填充算法): (1)初始化:堆栈置空。将种子点(x,y)入栈。
文档评论(0)