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

  • 40
  • 0
  • 约9.01千字
  • 约 11页
  • 2019-10-10 发布于江西
  • 举报

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

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精品文档

相关文档