计算机图形学作业

上传人:桔**** 文档编号:560801216 上传时间:2022-11-03 格式:DOCX 页数:7 大小:18.38KB
返回 下载 相关 举报
计算机图形学作业_第1页
第1页 / 共7页
计算机图形学作业_第2页
第2页 / 共7页
计算机图形学作业_第3页
第3页 / 共7页
计算机图形学作业_第4页
第4页 / 共7页
计算机图形学作业_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《计算机图形学作业》由会员分享,可在线阅读,更多相关《计算机图形学作业(7页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 计算机图形学题 目: 正八面体双色光源光照模型 姓 名: * 班级学号: * 2012年12月13日一、 案例描述在真实感图形绘制中光强是通过颜色来表示的,由于计算机中采用的是RGB颜色模型,所以要为红、绿、蓝三个分量分别建立光照模型。多点光源简单光照模型为:式中,n为点光源数量。通过点表、面表建立的八面体,给两个不同方向,不同颜色的光照,实现该模型在计算机图形学的具体应用。二、 案例设计 建立八面体的顶点表,并根据顶点表建立面表及点表,在Visual C+版中输入源程序,绘制出八面体。设置两个不同位置坐标、不同颜色的光源,光源的颜色使用镜面反射

2、光控制,为CtestView类添加红宝石、绿宝石和蓝宝石菜单项,代表材质的颜色,材质的颜色使用漫反射光反射率控制,背景为黑色。三、 案例编码主要程序如下:/ CTestView construction/destructionCTestView:CTestView()/ TODO: add construction code herePlay=FALSE;/动画按钮状态R=800.0,d=1000,Phi=90.0,Theta=0.0;/视点位置球坐标正前方LightNum=2;/光源数量pLight=new CLighting(LightNum);/光源动态数组pLight-Light0.S

3、etPosition(1000,1000,0);/光源位置坐标pLight-Light1.SetPosition(-1000,-1000,0);/光源位置坐标/设置光源参数pLight-Light0.L_Diffuse=CRGB(1.0,0.0,0.0);/光源的漫反射颜色pLight-Light1.L_Diffuse=CRGB(0.0,0.8,0.0);/光源的漫反射颜色for(int i=0;iLighti.L_Specular=CRGB(0.508,0.508,0.508);/光源镜面高光颜色pLight-Lighti.L_C0=1.0;/常数衰减系数pLight-Lighti.L_C1

4、=0.0000001;/线性衰减系数pLight-Lighti.L_C2=0.00000001;/二次衰减系数pLight-Lighti.L_OnOff=TRUE;/光源开启/设置材质参数pMaterial=new CMaterial;/材质指针pMaterial-M_Ambient=CRGB(0.255,0.0,0.0);/材质对环境光的反射率pMaterial-M_Diffuse=CRGB(0.508,0.508,0.508);/材质对漫反射光的反射率pMaterial-M_Specular=CRGB(1.0,1.0,1.0);/材质对镜面反射光的反射率pMaterial-M_Emit=C

5、RGB(0.2,0.2,0.2);/材质自身发散的颜色pMaterial-M_Exp=20.0;/高光指数/ CTestView message handlersvoid CTestView:ReadPoint()/点表double a=180;/顶点的三维坐标(x,y,z)P0.x=0;P0.y=+a;P0.z=0;P1.x=0;P1.y=0;P1.z=+a;P2.x=+a;P2.y=0;P2.z=0;P3.x=0;P3.y=0;P3.z=-a;P4.x=-a;P4.y=0;P4.z=0;P5.x=0;P5.y=-a;P5.z=0;void CTestView:ReadFace()/面表/面

6、的边数、面的顶点编号F0.SetEN(3);F0.p0=0;F0.p1=1;F0.p2=2;F1.SetEN(3);F1.p0=0;F1.p1=2;F1.p2=3;F2.SetEN(3);F2.p0=0;F2.p1=3;F2.p2=4;F3.SetEN(3);F3.p0=0;F3.p1=4;F3.p2=1;F4.SetEN(3);F4.p0=1;F4.p1=5;F4.p2=2;F5.SetEN(3);F5.p0=2;F5.p1=5;F5.p2=3;F6.SetEN(3);F6.p0=3;F6.p1=5;F6.p2=4;F7.SetEN(3);F7.p0=4;F7.p1=5;F7.p2=1;vo

7、id CTestView:OnMlred()/设置红色光源 / TODO: Add your command handler code herepLight-Light0.SetSpecular(CRGB(1.0,0.0,0.0);pLight-Light1.SetSpecular(CRGB(0.0,1.0,0.0);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MLRED,MF_CHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MLGREEN,MF_UNCHECKED);AfxGetMainWnd(

8、)-GetMenu()-CheckMenuItem(ID_MLBLUE,MF_UNCHECKED);Invalidate(FALSE);void CTestView:OnMlgreen()/设置绿色光源 / TODO: Add your command handler code herepLight-Light0.SetSpecular(CRGB(0.0,1.0,0.0);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MLRED,MF_UNCHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MLGREE

9、N,MF_CHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MLBLUE,MF_UNCHECKED);Invalidate(FALSE);void CTestView:OnMlblue()/设置蓝色光源 / TODO: Add your command handler code herepLight-Light0.SetSpecular(CRGB(0.0,0.0,1.0); AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MLRED,MF_UNCHECKED); AfxGetMainWnd()-GetM

10、enu()-CheckMenuItem(ID_MLGREEN,MF_UNCHECKED); AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MLBLUE,MF_CHECKED); Invalidate(FALSE);void CTestView:OnMmruby()/设置红宝石材质 / TODO: Add your command handler code herepMaterial-SetDiffuse(CRGB(1.0,0.0,0.0);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMSAPPHIRE,MF_U

11、NCHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMEMERALD,MF_UNCHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMRUBY,MF_CHECKED);Invalidate(FALSE);void CTestView:OnMmemerald()/设置绿宝石材质 / TODO: Add your command handler code herepMaterial-SetDiffuse(CRGB(0.0,1.0,0.0);AfxGetMainWnd()-GetMenu()

12、-CheckMenuItem(ID_MMSAPPHIRE,MF_UNCHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMEMERALD,MF_CHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMRUBY,MF_UNCHECKED);Invalidate(FALSE);void CTestView:OnMmsapphire()/设置蓝宝石材质 / TODO: Add your command handler code herepMaterial-SetDiffuse(CRGB(0.0,

13、0.0,1.0);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMSAPPHIRE,MF_CHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMEMERALD,MF_UNCHECKED);AfxGetMainWnd()-GetMenu()-CheckMenuItem(ID_MMRUBY,MF_UNCHECKED);Invalidate(FALSE);四、 案例总结 通过对Visual C+版的使用及对正八面体双光源光照模型建立,体会到了计算机图形学基本原理的具体实现方法,能更深的了解Visual C+版的上机环境,同时在老师的指导下,对计算机图形学这门课程有了更深了解,以及认识到了计算机图形学在实际生活中的广泛应用,为大学生的就业提供了新的平台。五、 参考文献(1) 计算机图形学实验及课程设计(Visual C+版)/孔令德编著.-背景:清华大学出版社,2012.3(2) 孔令德.计算机图形学基础教程(Visual C+版)M.北京:清华大学出版社,2008.(3) 孔令德.计算机图形学实践教程(Visual C+版)M.北京:清华大学出版社,2008. /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号