计算机图形学实验报告实验2.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贵州大学实验报告 学院:计算机科学与信息学院 专业:计算机科学与技术 班级:软件 121 姓名 袁青伟 学号 1208060222 实验组 实验时间 指导教师 李智 成绩 实验项目名称 实验二 椭圆生成算法 实验目的 通过本实验,使学生了解并掌握在光栅显示系统中圆、椭圆的生成和显示算法,进一步熟悉相关开发平台。 实验要求 1、优化后的算法:二次差分法 2、可任意指定圆心坐标。 3、书写实验报告: (1)给出算法描述,包括理论、算法和数据结构; (2)根据算法和数据结构:编制源程序; (3)给出实验数据和结果 (4)编制源程序; 3、对于一些较为重要的算法,可以适当给出代码 实验原理 一、生成园弧的中点算法 算法原理: 画出第二个八分园(45°-90°),利用八对称性画出其它八分园。 1.用中点算法画第二个八分园。 从当前已获得的象素递推出下一个象素。 园弧的隐函数的形式为 F(x,y)=x2+y2-R2=0 则园弧的正负划分性为: F(x,y)0,(x,y)在园外; F(x,y)0,(x,y)在园内; F(x,y)=0,(x,y)在园上。 设(xi,yi)为已确定的象素坐标,则下一个象素只能是正右方的E点或右下方的SE点。 设M是E和SE的中点,M=(xi+1,yi-0.5): 如F(M)0,则M在园内,说明E距离圆弧更近,下一点取正右方E点; 如F(M)0,则M在园外,说明SE距离圆弧更近,下一点取右下方SE点; 如F(M)=0,则M在园上,下一点取E点或SE点。 构造判别式:d=F(M)=F(xi+1,yi-0.5)=(xi+1)2+(yi-0.5)2-R2 (1)d0,中点在圆内,选正右方的E点,再下一个象素的判别式为: dnew=F(xi+2,yi-0.5) =(xi+2)2+(yi-0.5)2-R2=d+(2xi+3) 沿正右方向,d的增量为: (2) d=0,中点在圆外,选右下方的SE点,再下一个象素的判别式为: dnew=F(xi+2,yi-1.5) =(xi+2)2+(yi-1.5)2-R2=d+(2xi+3)+(- yi+2) =d+2(xi-yi)+5 沿右下方向,d的增量为: (3)d初始值为:d0=F(1,R-0.5) =1+(R-0.5)2-R2 =1.25-R 在d的运算中包含了浮点数的运算,为了消除d中的浮点数运算,分析上述算法,可以看出,算法中取作用的只是d的符号,所以可设另一整数变量h:h=d-0.25 所以:初始化运算d0 = 1.25–R 对应于:h0=1-R 判别式 d0 对应于 h-0.25 又因为:h的初值h0为整数,运算过程中的分量也为整数(?E和?SE为整数),故h始终为整数。所以可用h代替d作判断。 其初始值:h0=d0-0.25=(1.25-R)-0.25=1-R 有以下对应关系: h0 d0 h0 d0 h=0 d=0 算法分析: 二阶差分法:利用二阶差分降低增量的阶数 二阶差分(降低增量的阶数,用差分法消除中点算法中的乘法运算)。 中点算法中: 1,如在现有点p(xp,yp)上,对p+1点选择了E(xp+1,yp)点 (1)增量?ΔE 二阶差分增量为: (2)增量?ΔSE 二阶差分增量为: 2,如在现有点p(xp,yp)上,对p+1点选择了SE(xp+1,yp-1)点 (1) 增量?ΔE 二阶差分增量为: (2)增量ΔSE 二阶差分增量为: x y d (E ( SE x=x+1 ( d0) y d + (E (E+2 (SE+2 x=x+1 (d0) y-1 d + (SE (E+2 (SE+4 算法步骤: 1,依据上一次迭代中的d的符号来选择现在点E或SE (d0=1-R); 2,用在上一次迭代计算的和来计算新的d; 3,用移到新象素点的二次差分值,并用它来更新和移到下一点。 二、椭圆中点算法 算法原理: 中点算法可以推广到一般二次曲线如椭圆。 中心在原点的椭圆方程为: 隐函数的形式为: a=b时,该方程表示的是圆。 椭圆具有四对称性,可只考虑第一象限的椭圆弧。 椭圆上任一点(x,y)处的法向量为: 如在p点法线两分量相等,则p点将椭圆第一象限分成两部份,上半部份法向量在y方向的分量比x方向的大,在下半部份相反。在p点: 在当前中点处,法向量(2b2 (Xp+1),2a2 (Yp-0.5))的y分量比x分量大,即: b2 (Xp+1) a2 (Yp-0.5) 而在下一中点,不等式改变方向,则说明椭圆弧从上部分转入下部分。 与圆弧中点算法类似:确定一个象素Pi后,接着在下两个候选象素的中点计算一个判别式d=F(M)的值,由判别式的符号确定更近的点。 1.先讨论椭圆弧的上半部分(令△x=1) 设Pi(xi

文档评论(0)

lyxbb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档