- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学讲稿
第三章 生成直线和圆弧的算法 3.1 生成直线的DDA(Digital Differential Analyzer)方法 Ps Pe 图3.1 图中圆点表示DDA法生成的直线 无论光栅显示器或绘图机都可以看成有一个网格存在。表示一条直线,就是要用靠近直线的一些网格点来代表这一直线。显示时要使这些点发出一定亮度。 设直线的起点坐标Ps(xs,ys),终点坐标为Pe(xe,ye),令Δx=xe - xs, Δy=ye - ys,要绘的直线的微分方程是: 令 Δt= max(|Δx|,|Δy |) (3.2) 取时间步长为1/ Δt,则可得式(3.1)的数值解的递推公式 xi+1= xi + Δx/Δt, yi+1= yi + Δy/Δt (3.3) 用式(3.3)可求得图中直线PsPe上三角形表示的点,但显示时要用象素(即图中网格结点)来表示,这要用舍入的办法来找到最靠近三角形表示的点的象素,用这些象素(图中圆表示的点)来表示直线。这个方法称为DDA方法。 (3.1) 其程序如下: procedure dda(x1,y1,x2,y2:integer); var k, i: integer; x, y, xincre, yincre: real; begin k:=abs(x2-x1); if abs(y2-y1)k then k:=abs(y2-y1); xincre:=(x2-x1)/k; yincre:=(y2-y1)/k; x:=x1; y:=y1; for i:=1 to k do begin plot(trun(x), trun(y)); x:=x + xincre; y:=y + yincre; end; end; Δt= max(|Δx|,|Δy |) (3.2) xi+1= xi + Δx/Δt, yi+1= yi + Δy/Δt (3.3) (3.1) 3.2 生成直线的Bresenham算法 在直线生成的算法中Bresenham算法是最有效的算法之一。令 m=Δy/Δx,先就0≤m≤1的情况来说明Bresenham算法。可以得到下列递推公式: yi+1=yi+m(xi+1-xi) (3.5) 由于屏幕上相邻两象素的x坐标相差1,所以: yi+1=yi+m (3.7) xi Xi+1 Yi,r Yi+1,r C D B A 由于m不一定是整数,由此式求出的yi也不一定是整数,因此要用坐标为(xi,yir)的象素来表示直线上的点,其中yir表示最靠近yi的整数。设图3.2中xi列上已用(xi,yir)作为表示直线的点,又设B点是直线上的点,其坐标为(xi+1,yi+1),显然下一个表示直线的点( xi+1,yi+1,r)只能从图3.2中的C或者D点中去选。设A为CD边的中点,若B在A点上面则应取D点作为( xi+1,yi+1,r),否则应取C点。为了能确定B在A点上面或下面,令 ε(xi+1)=yi+1-yir-0.5 (3.8) 若B在A的下面,则有ε(xi+1)0,反之,则ε(xi+1)0。由图3.2可知 yi+1,r=yir+1,若ε(xi+1)≥0 (3.9) yi+1,r=yir, 若ε(xi+1)≤0 图3.2 ε(x)的几何意义 由式(3.8)和式(3.9)可得到 ε(xi+2)=yi+2 - yi+1,r - 0.5 (3.10) =yi+1 + m - yi+1,r - 0.5 yi+1 - yir -0.5 + m - 1,当ε(xi+1)≥0 yi+1 - yir -0.5 + m, 当ε(xi+1)≤0 ε(xi+1) + m -1 ,当ε(xi+1)≥0 ε(xi+1) + m , 当ε(xi+1)≥0 由式(3.7)和式(3.8)可得到 ε(x2)=y2 - y1 - 0.5 = m - 0.5 (3.11) 根据这个算法可得下列产生直线的程序: ={ ={ m:=deltay/deltax e:=m-0.5 for i:=1 to deltax do begin plot(x,y); if e=0 then
您可能关注的文档
最近下载
- 烟草考试真题及答案.doc VIP
- 2025年最新人教版八年级(初二)数学上册教学计划及进度表(新课标,新教材).docx
- 外研版高中《英语》(新标准)选择性必修一Unit1 单元整体教学设计附作业设计.docx VIP
- 5.1《论语》十二章 课件(共48张PPT)统编版高中语文选择性必修上册.pptx VIP
- 计算机网络实验报告(8)网络地址转换NAT配置、网络端口地址转换NAPT配置.pdf VIP
- 工程材料及成形技术基础-全套PPT课件.pptx
- 单证员考试试题.pdf VIP
- 地面空压机安装技术措施.docx VIP
- 工程建设法规的案例.ppt VIP
- 农产品食品检验员职业技能竞赛理论考试题库(含答案).docx VIP
文档评论(0)