计算机图形学课程设计.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文档。上传文档
查看更多
计算机图形学课程设计

合肥工业大学计算机图形学课程实验报告课程名称计算机图形学班级信息一班实验日期2011.12.22姓名陈育伟学验成绩实验名称直线绘制和填充纹理实验目的及要求应用VC6.0绘制直线应用VC6.0及OpenGL进行纹理填充实验环境VC++6.0,OpenGL实验内容计算机图形学的算法,并用c语言编写绘图程序。主要内容包括线段、园、区域填充、线型线宽、字符、裁剪、等基本图形生成算法;样条、Bezier、等常用曲线的生成算法;Coons曲面、Bezier曲面、B样条曲面等常用曲面的生成算法。Bresenham画法与中点法相似,都是通过每列象素中确定与理想直线最近的像素来进行直线的扫描的转换的。通过各行、各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的像素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只需要检查一个误差项的符号,就可以确定该列的所有对象。从根本上说,纹理是物体表面的细小结构,它可以是光滑表面的花纹、图案,是颜色纹理,这时的纹理一般都是二维图象纹理,当然它也有三维纹理,我们将在下面的小节中分别介绍它们的映射方法;纹理还可以是粗糙的表面(如桔子表面的皱纹),它们被称为几何纹理,是基于物体表面的微观几何形状的表面纹理,一种最常用的几何纹理就是对物体表面的法向进行微小的扰动来表现物体表面的细节。算法描述及实验步骤一、Bresenham直线算法1、画点(x1,y1),dx=x(2)-x(1),dy=y(2)-y(1),计算误差初值P(1)=2dy-dx,i=1.2、求直线的下一点位置x(i+1)=x(i)+1,如果P(i)0,则y(i+1)=y(i)+1,否则y(i+1)=y(i).3、画点(x(i+1),y(i+1)).4、求下一个误差P(i+1),如果P(i)0,则P(i+1)=P(i)+2dy-2dx,否则P(i+1)=P(i)+2dy.5、I=i+1;如果idx+1则转2;否则结束操作。 二、图象纹理:将二维纹理图案映射到三维物体表面,绘制物体表面上一点时,采用相应的纹理图案中相应点的颜色值。函数纹理:用数学函数定义简单的二维纹理图案,如方格地毯。或用数学函数定义随机高度场,生成表面粗糙纹理即几何纹理。调试过程及实验结果一、绘制直线单击直线选项,在下拉菜单中分别有DDA算法生成直线,Bresenham算法生成直线,中点算法生成直线。程序运行效果如图所示:选择相关选项后,可以得到不同算法生成的直线效果图。二、纹理填充总结在该课设过程中遇到了诸多问题,一个错误导致整个程序的无法运行,严重滞后了程序开发的进度,为此,我将问题简化,将一个大的系统分成几个小模块进行,如此一来,某个模块无法运行不会影响到其他模块的调试,较好的帮助了排错过程。此外,尽管对于图形学的相关算法设计比较了解,但因为具体实现过程中,相关的代码的设计错误,以及对MFC不够了解,导致开发进度缓慢。对该问题,我一方面对代码的构建更加仔细,另一方面积极利用身边的资源进行疑难解答。最后终于排除了种种困难,基本实现了课设的要求。同时,我也应当看到此次课程设计的一些不足,例如三大模块最后并没有整合在一起,对于直线起点终点,圆的中点等信息无法由外界定义,这些问题,假以时日,定能得到改进。通过此次课程设计,我的实际操作能力不仅得到了提高,也为我进一步深入图形学奠定了坚实的基础。附录直线绘制DDA算法:void C基本图形的生成View::OnDdaline(){CDC*pDC = GetDC();int xa=100,ya=300,xb=300,yb=200,c=RGB(255,0,0);int x,y;float dx,dy,k;dx=(float)(xb-xa),dy=(float)(yb-ya);k=dy/dx,y=ya;if(abs(k)1){for(x=xa;x=xb;x++){pDC-SetPixel (x,int(y+0.5),c);y=y+k;}}if (abs(k)=1){for(y=ya;y=yb;y++){ pDC-SetPixel (int(x+0.5),y,c);x=x+1/k;}}ReleaseDC(pDC);}Bresenham算法:void C基本图形的生成View::OnBresenhamline(){CDC*pDC = GetDC();int x1=100,y1=200,x2=350,y2=100,c=RGB(0,0,255);int i,s1,s2,interchange,f;float x,y,deltax,deltay,e,temp;x=x1;y=y1;deltax=abs(x2-x1);deltay=abs(y2-y1);if(x2-x1=0) s1=1;else s1=-1;if(

文档评论(0)

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

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

1亿VIP精品文档

相关文档