




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
太原工业学院计算机工程系实 验 报 告课程名称计算机图形学班级1320541实验日期2015年6月4日星期四姓 名刘创学号37实验成绩实验名称 实验四 地理划分画球算法实验目的及要求1) 理解球边表和面表算法2) 理解双缓冲的算法3) 理解mfc作用原理实验环境VC+6.0基于MFC实验内容 利用mfc绘制地理球算法描述及实验步骤部分重要代码截图:(用适当的形式表达算法设计思想与算法实现步骤)调试过程及实验结果实验过程中没有出现太大的问题实验结果展示如下: 地理球(详细记录在调试过程中出现的问题及解决方法。记录实验运行结果)总结1) 通过本次实验,了解到了mfc的最基本知识,发现自己学习mfc任重而道远,在前行的路上还有很多学习的地方。2) 实践是检验真理的唯一标准3) 动手能力需要再次提高4) 算法思想要与时俱进,要多学习算法(对实验结果进行分析,实验心得体会及改进意见)附录附录附录附录附录/OnDraw函数void CTestView:OnDraw(CDC* pDC)CTestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereDoubleBuffer();void CTestView:ReadVertex()/读入顶点坐标int gAlpha=4,gBeta=4;/面片夹角N1=180/gAlpha,N2=360/gBeta;/N1为纬度区域,N2为经度区域V=new CP3(N1-1)*N2+2;/V为球的顶点/纬度方向除南北极点外有N11个点,2代表南北极两个点double gAlpha1,gBeta1,r=300;/r为球体半径/计算北极点坐标V0.x=0,V0.y=r,V0.z=0;/按行循环计算球体上的点坐标for(int i=0;iN1-1;i+)gAlpha1=(i+1)*gAlpha*PI/180;for(int j=0;jN2;j+) gBeta1=j*gBeta*PI/180;Vi*N2+j+1.x=r*sin(gAlpha1)*sin(gBeta1);Vi*N2+j+1.y=r*cos(gAlpha1);Vi*N2+j+1.z=r*sin(gAlpha1)*cos(gBeta1);/计算南极点坐标V(N1-1)*N2+1.x=0,V(N1-1)*N2+1.y=-r,V(N1-1)*N2+1.z=0;void CTestView:ReadFace()/读入面表/设置二维动态数组F=new CFace *N1;/设置行for(int n=0;nN1;n+)Fn=new CFaceN2;/设置列for(int j=0;jN2;j+)/构造北极三角形面片int tempj=j+1;if(tempj=N2) tempj=0;/面片的首尾连接int NorthIndex3;/北极三角形面片索引号数组NorthIndex0=0;NorthIndex1=j+1;NorthIndex2=tempj+1;F0j.SetNum(3);for(int k=0;kF0j.vN;k+)F0j.vIk=NorthIndexk;for(int i=1;iN1-1;i+)/构造球面四边形面片for(int j=0;jN2;j+) int tempi=i+1;int tempj=j+1;if(tempj=N2) tempj=0;int BodyIndex4;/球面四边形面片索引号数组BodyIndex0=(i-1)*N2+j+1;BodyIndex1=(tempi-1)*N2+j+1;BodyIndex2=(tempi-1)*N2+tempj+1;BodyIndex3=(i-1)*N2+tempj+1;Fij.SetNum(4);for(int k=0;kFij.vN;k+)Fij.vIk=BodyIndexk;for(j=0;jN2;j+)/构造南极三角形面片int tempj=j+1;if(tempj=N2) tempj=0;int SouthIndex3;/南极三角形面片索引号数组SouthIndex0=(N1-2)*N2+j+1;SouthIndex1=(N1-1)*N2+1;SouthIndex2=(N1-2)*N2+tempj+1;FN1-1j.SetNum(3);for(int k=0;kSetMapMode(MM_ANISOTROPIC);/pDC自定义坐标系pDC-SetWindowExt(rect.Width(),rect.Height();/设置窗口范围pDC-SetViewportExt(rect.Width(),-rect.Height();/x轴水平向右,y轴垂直向上pDC-SetViewportOrg(rect.Width()/2,rect.Height()/2);/屏幕中心为原点CDC MemDC;/内存DCCBitmap NewBitmap,*pOldBitmap;/内存中承载图像的临时位图MemDC.CreateCompatibleDC(pDC);/建立与屏幕pDC兼容的MemDC NewBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height();/创建兼容位图 pOldBitmap=MemDC.SelectObject(&NewBitmap); /将兼容位图选入MemDC MemDC.FillSolidRect(&rect,pDC-GetBkColor();/按原来背景填充客户区,否则是黑色MemDC.SetMapMode(MM_ANISOTROPIC);/MemDC自定义坐标系MemDC.SetWindowExt(rect.Width(),rect.Height();MemDC.SetViewportExt(rect.Width(),-rect.Height();MemDC.SetViewportOrg(rect.Width()/2,rect.Height()/2);DrawObject(&MemDC);pDC-BitBlt(-rect.Width()/2,-rect.Height()/2,rect.Width(),rect.Height(),&MemDC,-rect.Width()/2,-rect.Height()/2,SRCCOPY);/将内存位图拷贝到屏幕MemDC.SelectObject(pOldBitmap);/恢复位图NewBitmap.DeleteObject();/删除位图ReleaseDC(pDC);/释放DCvoid CTestView:DrawObject(CDC *pDC)/绘制球面线框模型 CP2 Point33,t3;/南北极顶点数组CP2 Point44,t4;/球体顶点数组for(int i=0;iN1;i+)for(int j=0;j=0)/背面剔除if(3=Fij.vN)/三角形面片for(int m=0;mFij.vN;m+)PerProject(VFij.vIm);Point3m=ScreenP;for(int n=0;nMoveTo(Point3n.x,Point3n.y);t3=Point3n;elsepDC-LineTo(Point3n.x,Point3n.y);pDC-LineTo(t3.x,t3.y);/闭合多边形else/四边形面片for(int m=0;mFij.vN;m+)PerProject(VFij.vIm);Point4m=ScreenP;for(int n=0;nMoveTo(Point4n.x,Point4n.y);t4=Point4n;elsepDC-LineTo(Point4n.x,Point4n.y);pDC-LineTo(t4.x,t4.y);/闭合多边形 void CTestView:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultAlpha=5;Beta=5;tran.RotateX(Alpha);tran.RotateY(Beta);Invalidate(FALSE);CView:OnTimer(nIDEvent);BOOL CTestView:OnEraseBkgnd(CDC* pDC)/禁止背景刷新 / TODO: Add your message handler code here and/or call defaultreturn TRUE;void CTestView:OnInitialUpdate() CView:OnInitialUpdate();/ TODO: Add your specialized code here and/or call the base classReadVertex();ReadFace();tran.SetMat(V,(N1-1)*N2+2);InitParameter();void CTestView:OnExit() / TODO: Add your command handler
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 志愿者的活动总结13篇
- 汉字注拼音的课件制作
- 汉字教育课件
- 福建省龙岩市2024-2025学年高二下学期期末教学质量检查政治试卷(含解析)
- 安徽省合肥市庐江县柯坦中学2024-2025学年七年级下学期6月期末数学试题(含部分答案)
- 2024-2025学年甘肃省白银十一中八年级(下)期末语文试卷(含答案)
- 大数据技术应用趋势分析
- 快递公司工作总结(集合10篇)
- 跨境电商市场发展瓶颈分析
- 汉字之美课件
- 高速天桥拆除方案(3篇)
- 2025年中国冷链物流行业投资前景分析、未来发展趋势研究报告(智研咨询发布)
- 2025合作合同范本下载
- 手外伤急救诊疗流程标准化
- 农村土地托管培训课件
- 老年专科护士学习培训汇报
- 基孔肯雅热防控培训课件
- 公司岗位补助管理办法
- 游戏与儿童发展课件
- 捐赠助学活动方案
- 健康体检服务投标方案投标文件(技术方案)
评论
0/150
提交评论