《地形模型的三维可视化》程序设计.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 1 《地形模型的三维可视化》程序设计 一、题目 请用OpenGL图形库,编制程序实现地形模型的三维可视化,并进行地形模型的纹理设置,并可以通过键盘进行交互操作(移动和旋转)。 (注:给定的地形模型数据是已经建好的不规则三角网。) 二、提交资料 1.程序的详细步骤和所有相关数据; 步骤:①录入三角形数据 ②获得地形的范围 ③绘制三角网 ④设置纹理坐标 ⑤计算参考点的位置 ⑥移动 相关数据文件:数据文件DHS.dat 三角网文件DHS.tri 图片文件 TERRAIN.BMP 2. 程序清单(包括程序说明); #include stdafx.h #include windows.h #include GL/gl.h #include GL/glu.h #include GL/glaux.h #include fstream.h #include math.h void CALLBACK elbowAdd (void); void CALLBACK elbowSubtract (void); void CALLBACK shoulderAdd (void); void CALLBACK shoulderSubtract (void); //点结构定义 typedef struct { long id; double x; double y; double z; }POINTXYZ; //三角形结构定义 typedef struct { long id; //三角形号 long p[3]; //三角形三个顶点的序号 long xl[3]; //拓扑关系 }TRIANGLE; //顶点变量 POINTXYZ *pPt; //三角形变量 TRIANGLE *pTri; //顶点总数 int iTotalNum; //三角形总数 int iTotalTriNum; //外围结构 typedef struct vrtagBOX { double minx; double miny; double minz; double maxx; double maxy; double maxz; }vrBOX; //外围结构 vrBOX _box; unsigned int m_nID; //存储纹理的索引号 int m_nWidth; //纹理图片的宽度 int m_nHeight; //纹理图片的高度 float (*_ptexture)[2]; //存储三角网的纹理数据 //视点参考点的偏移量 double lookx, looky, lookz; //移动的速度 float _speed; //垂直方向视点和所要看实体的间的距离 float _height; //视点的位置 double _eyeposition[3]; //参考点的位置 double _referencepoint[3]; //鼠标位移与象素之比的分母,即象素数 int _Pixels; //设置纹理坐标 void SetTextureCoord(); //读取纹理数据 bool LoadTriangleBMP( LPSTR szFileNameD); //向前移动 void Move(bool is_forward); //获得鼠标在x,y方向的相对位移量 bool Rotate(int dx, int dy); //计算视点与参考点的位置 void _CalcuEyePositionAndReferencePoint(int type,float amount); void myinit(void); //读取点坐标、三角形数据 void ReadData(); void Render(); //获得外围 void SetBOX(); void CALLBACK myReshape(GLsizei w, GLsizei h); void CALLBACK display(void); //读取纹理数据 bool LoadTriangleBMP(char* szFileName) { AUX_RGBImageRec *pBitmap = NULL; if(!szFileName) return false; //装载数据并存储 pBitmap = auxDIBImageLoad(szFileName); if(pBitmap == NULL) return false; glGenTextures(1, m_nID); // 绑定纹理到纹理数组,并进行初始化。 glBindTexture(GL_TEXTURE_2D, m_nID); //控制纹理,映射到片元(f

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档