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

  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文档。上传文档
查看更多
大学实验报告 学院:计算机科学与信息 专业:计算机科学与技术班级:计科101喻志华学号1008060024实验组实验时间2013/3/30指导教师吴云 学院:计算机科学与信息 专业:计算机科学与技术 班级:计科101 喻志华 学号 1008060024 实验组 实验时间 2013/3/30 指导教师 吴云 成绩 实验项目名称 圆和椭圆的生成算法 实 验 根据圆的Brensenham算法、中点算法和中点改进算法, 以及椭圆的中点算法, 编写 目 程序,实现圆与椭圆的绘制。 实 验 要 求的 实 验 要 求 圆、椭圆的中点算法 圆的优化后的算法:二次差分法 编制源程序; 对于一些较为重要的算法,可以摘抄在报告中; 1.中点算法 A .构造函数 F(X,Y)=X +Y-R,则可知 F (M 0: M在圆,取T F ( M 0 : M在圆外,取B B .第一个M点的值有: 2 2 2 DM = F(M0)= F(1,R-0.5)= 1 +(R-0.5) -R =1.25-R 右 D=d-0.25 则判别式d0等价于D-0.25。即DM=1-R与DM=1.25-R等价。 实 验 原 理 如果dM0,表示下一中点 M在圆,选择T点,且: dMT= F(MT)= F(xp+2,yp-0.5) 贝U: ?dMT= dMT - dM=2xp+3 如果dM0,表示下一中点 M在圆外,选择B点,且: dMB= F(xMB,yMB)= F(xp+2,yp-1.5) 贝U: ?dMB= dMB - dM=2xp-2yp +5 2?中点改进算法一一增量算法 设圆上某点l(xi,yi);则下一点为J点,坐标为(xi+1 , yj ) dT=2xp+3; dB=2(xp-yp)+5; d1=d2=0; 因为x每次加1,所以dj点 将增量?dMT-2(xi+1)+3-dT+2-dT+d1; (d1=d1+2) 将增量?dMB-2(xi+1)-2yj+5-dB+d1+d2; dj较之于di , x部分增量增加相冋的量, y部分两种情况 取T点,yj不减1, y部分增量的增量无变化 取B点,yj减1, y部分增量的增量加 2. 所以当y —时,d2-d2+2 因此,d0, d-d+dT+d1; d0, d-d+dB+d1+d2; Brensenham 算法 1.基本思想: 当|D(Ti)| |D(Bi)| ,则Bi更接近于圆周,选择 Bi ; 当|D(Ti)| v|D(Bi)| ,则Ti更接近于圆周,选择 Ti ; 若令 D-|D(Ti)|-|D(Bi)| 贝U D 0,取 Bi ; D v 0,取 Ti ; 2.三种情况 设 x0-0 , y0-R;则 T1 为(1,R) , B1 为(1,R-1), d1- (12+R2-R2)+[(12+(R-1)2-R2]-3-2R 若 di v 0,则取 Ti 作为下一点,即 Pi(xi-1+1,yi-1) ; d(i+1)-di+4xi-1+6 若 di 0,则取 Bi 作为下一点,即 Pi(xi-1+1,yi-1-1) , d(i+1)-di+4(xi-1-yi-1)+10 椭圆的中点算法 与圆同理,对于某中点 M 2 2 2 2 2 2 dM=F(M)=b(x+1) +a(y-0.5) -a b (1)若d=0,则M在椭圆弧上,取 T/B点 ⑵若d0,则M在椭圆弧,应取T点 ⑶若d0,则M在椭圆弧外,应取 B点 A?上半部分雷同圆的推导,得到结论: d10, d1=d1+b*b*(2*x+3); d1=0, d1= d1+(b*b*(2*x+3)+a*a*(-2*y+2)) 每次判断是否转入下部分: b*b*(x+1) a*a*(y-0.5) 说明还在上部分 B.下部分,y变化较快,每次减1,根据d值决定选L或者R点,知道y=0. 分L和R两种情况推导,得到结论: d2 0,d2 =d2+b*b*(2*x+2)+a*a*(-2*y+3) d1=0, d2=d2+a*a*(-2*y+3) Visual C++ 6.0/ Win dows XP 实 验 步 骤 1.新建工程MFC 2.插入两个对话框,绘制圆的命名为InputDIg,绘制椭圆的命名为 InputDIg,且 设置其各控件ID,变量名如下: WFC Wizard Uc-Qi-tt^r M?l^ Vari*birt 加jwtbimI Uc-Qi-tt^r M?l^ Vari*birt 加jwtbimI | AclMcKEwnts | Cl?^? IfWn | iPrnjctt Ctfefi* ^niiic; [HR^wOrrlrl IA T 1 ” F F:UAInrvOl*甲p ■CflTir?| 环: IDC F[MT1 dcMjhk hi

文档评论(0)

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

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

1亿VIP精品文档

相关文档