欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算机图形学课程设计圆柱面图像纹理映射算法.docx

    • 资源ID:16320134       资源大小:287.92KB        全文页数:14页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机图形学课程设计圆柱面图像纹理映射算法.docx

    1、计算机图形学课程设计圆柱面图像纹理映射算法计算机图形学课程设计-圆柱面图像纹理映射算法计算机图形学课程学习报告 项目题目: 圆柱面图像纹理映射算法 1、项目描述.1 1.1圆柱面的建立和二维图像纹理的绑定.11.2坐标系的建立.1二、项目需求.1三、项目设计.3 3.1.8 时间函数.9 3.1.9 动画控制函数.10四、项目效果.105、项目总结.116、参考文献.121、项目描述 1.1、圆柱的建立和二维图像纹理的绑定 以屏幕客户区中心为体心建立圆柱面的几何模型。读入二维位图图像纹理,将纹理绑定到圆柱上。使用材质慢反射率设置纹理颜色,光源颜色设置为白色。使用Phong明暗处理绘制光照纹理圆

    2、柱面动画 1.2、坐标系的建立 1、自定义屏幕三维左手坐标,原点位于客户区中心,x轴水平向右为正,y轴垂直向上为正,z轴指向屏幕内部, 2、建立三维用户右手坐标系O;x,y,z,原点O位于客户区中心,x轴水平向右,y垂直向上,z轴指向读者。2、项目需求 2.1、几何构造的原理 圆柱面采用平面四边形小面逼近,需要根据周向相邻2个小面的法矢量计算平均法矢量。对于索引号(i,j)的顶点,其相邻顶点的索引号如图所示。图中箭头所示为每个小面的边矢量,俩个边矢量的叉积得到小面的法矢量Ni。小面的平均法矢量N的计算公式为N= 圆柱面平均法矢量的计算 2.2、动画的设计 实现动画的函数 void CMy123

    3、054212View:OnPlay() / TODO: Add your command handler code here bPlay=bPlay?FALSE:TRUE; if(bPlay)/设置定时器 SetTimer(1,150,NULL); Else KillTimer(1);设定动画时间void CTestView:OnTimer(UINT nIDEvent)/动画时间函数 / TODO: Add your message handler code here and/or call defaultBeta=5;tran.RotateY(Beta);Invalidate(FALSE);

    4、CView:OnTimer(nIDEvent); 2.3、纹理的设计 2.3.1 纹理映射的原理 使用MFC的资源标签页加载二维图像纹理,DDB位图的标识取为IDB_TEXTURE。将纹理读入二维数组中,将纹理图像绑定到圆柱面的侧面网格顶点上。将图像纹理的颜色值作为材质漫反射率和环境光反射率,镜面反射光设置为白光,使用Phong明暗处理绘制光照纹理圆柱面。 2.3.2 纹理的定义 在CTestView类内添加成员函数ReadVertex(),将纹理绑定到圆柱面侧面的顶点上,CT2类定义了纹理坐标的(u,v)。由于底面和顶面采用三角形网格逼近,所以使用CT2类定义了Texture4和Textur

    5、e3纹理数组。圆柱的侧面使用周向平均法矢量计算光照。填充底面顶面的三角形面片时,进行了特殊处理。然后添加ReadImage()读入纹理。3、项目设计3.1、窗口设计以及各项功能的实现3.1.1窗口设计函数BOOL CMy123054212App:InitInstance() / The one and only window has been initialized, so show and update it.m_pMainWnd-ShowWindow(SW_MAXIMIZE);m_pMainWnd-SetWindowText(1234054212刘美艳);m_pMainWnd-Update

    6、Window();return TRUE;3.1.2、点表函数void CMy123054212View:ReadVertex()/点表 double r=144;/圆柱底面半径 h=500;/圆柱的高 cTheta=10;/周向夹角 cNum=10;/纵向间距 N1=360/cTheta;/N1周向网格数 N2=Round(h/cNum);/N2纵向网格数 V=new CP3N1*(N2+1)+2;/顶点动态数组 T=new CT2N1*(N2+1)+2;/纹理动态数组 N=new CVectorN1*(N2+1)+2;/法矢量动态数组 double cTheta1,cNum1; V0.x=

    7、0;V0.y=0;V0.z=0;/底面中心 T0.u=0;T0.v=0;/闲置 for(int i=0;iN2+1;i+)/纵向 cNum1=i*cNum; for(int j=0;j1) Ti*N1+j+1.v=Vi*N1+j+1.y/h*(bmp.bmHeight-1);/v(0-1)VN1*(N2+1)+1.x=0;VN1*(N2+1)+1.y=h;VN1*(N2+1)+1.z=0;/顶面中心TN1*(N2+1)+1.u=0;TN1*(N2+1)+1.v=0;/闲置3.1.3、面表函数void CMy123054212View:ReadFace()/面表/设置二维动态数组F=new CF

    8、ace *N2+2;/纵向for(int n=0;nN2+2;n+)Fn=new CFaceN1;/周向for(int j=0;jN1;j+)/构造底部三角形面片int tempj=j+1;if(N1=tempj) tempj=0;/面片的首尾连接int BottomIndex3;/底部三角形面片索引号数组BottomIndex0=0;BottomIndex1=j+1;BottomIndex2=tempj+1;F0j.SetNum(3);for(int k=0;kF0j.vN;k+)/面片中顶点索引号F0j.vIk=BottomIndexk; for(int i=1;iN2+1;i+)/构造圆

    9、柱体四边形面片for(int j=0;jN1;j+)int tempi=i+1;int tempj=j+1;if(N1=tempj) tempj=0;int BodyIndex4;/圆柱体四边形面片索引号数组BodyIndex0=(i-1)*N1+j+1;BodyIndex1=(tempi-1)*N1+j+1;BodyIndex2=(tempi-1)*N1+tempj+1;BodyIndex3=(i-1)*N1+tempj+1;Fij.SetNum(4);for(int k=0;kFij.vN;k+)Fij.vIk=BodyIndexk; for(j=0;jN1;j+)/构造顶部三角形面片in

    10、t tempj=j+1;if(N1=tempj) tempj=0;int TopIndex3;/顶部三角形面片索引号数组TopIndex0=N1*i+1;TopIndex1=N1*(i-1)+tempj+1;TopIndex2=N1*(i-1)+j+1;FN2+1j.SetNum(3); for(int k=0;kInitDeepBuffer(800,800,1000);/初始化深度缓冲器CPi3 Point33;/底面与顶面三角形顶点数组CT2 Texture33;/底面与顶面三角形纹理数组CVector Normal33;/底面与顶面三角形法矢量数组CPi3 Point44;/侧面四边形顶

    11、点数组CT2 Texture44;/侧面四边形纹理数组CVector Normal44;/侧面四边形法矢量数组for(int i=0;iN2+2;i+)for(int j=0;j=0)if(3=Fij.vN)/处理三角形面片for(int m=0;mSetPoint(Point3,Normal3,Texture3,3);/初始化zbuf-CreateBucket();/创建桶表zbuf-CreateEdge();/创建边表zbuf-Phong(pDC,ViewPoint,pLight,pMaterial,Image);/填充三角形zbuf-ClearMemory();else/处理四边形面片f

    12、or(int m=0;mSetPoint(Point4,Normal4,Texture4,4);/初始化zbuf-CreateBucket();/创建桶表zbuf-CreateEdge();/创建边表zbuf-Phong(pDC,ViewPoint,pLight,pMaterial,Image);/填充四边形zbuf-ClearMemory();delete zbuf;3.1.5、透视变换函数void CMy123054212View:PerProject(CP3 P)/透视变换CP3 ViewP;ViewP.x=P.x*k3-P.z*k1;/观察坐标系三维坐标ViewP.y=-P.x*k8+

    13、P.y*k2-P.z*k7;ViewP.z=-P.x*k6-P.y*k4-P.z*k5+R;ViewP.c=P.c;ScreenP.x=d*ViewP.x/ViewP.z;/屏幕坐标系三维坐标ScreenP.y=Round(d*ViewP.y/ViewP.z);ScreenP.z=Far*(1-Near/ViewP.z)/(Far-Near);ScreenP.c=ViewP.c;3.1.6、读入纹理void CMy123054212View:ReadImage()/读入纹理CBitmap NewBitmap;NewBitmap.LoadBitmap(IDB_TEXTURE);/调入DDB位图N

    14、ewBitmap.GetBitmap(&bmp);/将CBitmap的信息保存到Bitmap结构体中int nbytesize=bmp.bmWidthBytes*bmp.bmHeight;im=new BYTEnbytesize;NewBitmap.GetBitmapBits(nbytesize,(LPVOID)im);Image=new COLORREF*bmp.bmHeight;for(int n1=0;n1bmp.bmHeight;n1+)Imagen1=new COLORREFbmp.bmWidth; for(n1=0;n1bmp.bmHeight;n1+)for(int n2=0;n

    15、2SetCheck(TRUE);pCmdUI-SetText(停止);elsepCmdUI-SetCheck(FALSE);pCmdUI-SetText(开始);4、项目效果4.1构造图形分析以及坐标系变换的效果5、项目总结 本项目将一幅位图映射到圆柱面上,并进行了光照计算。由于圆柱面侧面的展开图是长方形,如果取得图像大小为侧面展开图的大小,则圆柱面上的像素与图像上的像素有一一对应关系。本项目在点表中进行图像纹理绑定。对于单幅图像映射,一般在点表中绑定;对于多幅图像映射,一般在面表中绑定。侧面四边形顶点的法矢量取为周向2个表面的平均法矢量。圆柱面试闭合的二次曲面,这要求对图像纹理闭合处进行特殊处理,处理方法见DrawObject()函数。六、参考文献 计算机图形学实践教程(第二版 孔令德) 计算机图形学基础教程(第二版 孔令德)


    注意事项

    本文(计算机图形学课程设计圆柱面图像纹理映射算法.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开