郑州大学三维GIS考试重点总结_gis空间分析复习总结

2020-02-28 其他工作总结 下载本文

郑州大学三维GIS考试重点总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“gis空间分析复习总结”。

简答题

1、OpenGL左右手坐标系、向量、三维几何变换

左右手坐标系渲染出来的2D图像结果是不一样的,左右颠倒。从定义可知,左右手的区别就是z轴一正一负,当然z取反就转换了。要在透视前的最后一步上加上反转的语句——也就是viewMatrix.appendScale(1,1,-1)——这样所有的顶点就都会反转了。标准向量变换是从对象坐标系变换到视觉坐标系,它是用来计算光照的。标准向量的变换中,视觉矩阵(view matrix)是GL_MODELVIEW逆矩阵的转置矩阵和标准向量(Normal vector是)相乘所得。

几何变换是将一个几何图形按照一定的规则或规律变换为另一个新的几何图形,包括二维几何变换和三维几何变换,最基本的三种变换是平移、旋转和缩放。

2、OpenGL5大变换 1)视点变换:相当于设置视点的位置和方向,OpenGL实用库提供了函数gluLookAt()来指定视点变换。

2)模型变换:在世界坐标系中进行的,包括模型平移:glTranslate{fd}(TYPE x, TYPE y, TYPE z),模型旋转:glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z),模型缩放:glScale{fd}(TYPE x, TYPE y, TYPE z)3)投影变换:目的是定义一个视景体,使视景体外多余的部分裁剪掉,最终进入图像的只是视景体内的有关部分,包括透视投影和正射投影。透视投影函数:void glFrustum()和void gluPerspective(),正射投影函数:void glOrtho()和void gluOrtho2D()。

4)视口变换:将视景体内投影的物体显示在二维的视口平面上。相关函数:glViewport()5)裁剪变换:视景体定义了上下左右前后六个裁剪平面,用户还可以自己定义附加裁剪平面,以去掉场景中无关的目标。相关函数:void glClipPlane()

3、怎么绘制一个图形、一个三角面片、一个四面体,给坐标写代码 三角形

glBegin(GL_TRIANGLES);glVertex2f(0,0.7);glVertex2f(-0.7,-0.7);glVertex2f(0.7,-0.7);glEnd();四面体

GLfloat pyramid[][3]={{0.0,1.0,0.0},{0.5,0.0,0.5},{-0.5,0.0,0.5},{-0.5,0.0,-0.5},{0.0,0.0,-0.5}};//定义顶点坐标

glBegin(GL_TRIANGLE_FAN);//使用扇形三角形模式 glNormal3f(0.0,0.447214f,0.894427f);//前平面法向量 glVertex3fv(pyramid[0]);//前平面 glVertex3fv(pyramid[1]);glVertex3fv(pyramid[2]);

glNormal3f(-0.894427f,0.447214f,0.0);//左平面法向量 glVertex3fv(pyramid[3]);//左平面

glNormal3f(0.0,0.447214f,-0.894427f);//后平面法向量 glVertex3fv(pyramid[4]);//后平面

glNormal3f(0.894427f,0.447214f,0.0);//右平面法向量 glVertex3fv(pyramid[1]);//右平面 glEnd();//结束绘制 立方体

// 将立方体的八个顶点保存到一个数组里面

static const float vertex_list[][3] = {

-0.5f,-0.5f,-0.5f, 0.5f,-0.5f,-0.5f,-0.5f, 0.5f,-0.5f, 0.5f, 0.5f,-0.5f,-0.5f,-0.5f, 0.5f, 0.5f,-0.5f, 0.5f,-0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, };

// 将要使用的顶点的序号保存到一个数组里面

static const GLint index_list[][2] = {

{0, 1},{2, 3},{4, 5},{6, 7},{0, 2},{1, 3}, {4, 6},{5, 7},{0, 4},{1, 5},{7, 3},{2, 6} };

// 绘制立方体

void DrawCube(void){ int i,j;glBegin(GL_LINES);

for(i=0;i

{ for(j=0;j

} } glEnd();}

4、设置光源,环境光、漫反射光,光源位置,给光源设置材质,怎么设置该材质 在光照中首先是光源,要有光源才能产生光线,才有以后的一系列反射、折射、散射等效果,OpenGL在模拟光源和光照时,假定可以将光分解为红、绿、蓝三种分量,对于光源可以使用其发射的红光、绿光和蓝光的量来描述,对于物体表面的材质可以使用其在各个方向反射的红光、绿光和蓝光的比例来描述。

OpenGL光照模型将光照分为4个独立的部分:环境光、散射光、镜面反射光和发射光,这四种光被分别计算,然后被叠加起来。

使用OpenGL的光照模型包括以下几个步骤:

1、设置光源的种类、位置和方向(对于平行光源)

2、为每个图元的每个顶点指定它的法线向量

3、为各个图元指定它的材质

OpenGL用材质对光线中红、绿、蓝三原色的反射率来近似定义材质的颜色。像光源一样,材质颜色也分成环境、漫反射和镜面反射成分,它们决定了材质对环境光、漫反射光和镜面反射光的反射程度。在进行光照计算中,材质对环境光的反射率与每个进入光源的环境光结合,对漫反射光的反射率与每个进入光源的漫反射光结合,对镜面光的反射率与每个进入光源的镜面反射光结合。对环境光与漫反射光的反射程度决定了材质的颜色。

5、什么是显示列表,作用,如何创建,如何调用,写出函数

显示列表是由一组预先存储起来的留待以后调用的OpenGL函数语句组成,当调用显示列表时就按顺序执行表中所列出的函数语句。使用显示列表可以提高程序性能。Void glNewList()该函数标记一个显示列表的开始,其后的OpenGL函数存入显示列表中,直至调用glEndList()。

Void glCallList()该函数执行list指定的显示列表,即按次序一句一句执行列表中的语句。

6、纹理的使用步骤,如何设置

纹理映射是真实感图像制作的一个重要部分,运用它可以方便地制作出极具真实感的图形而不必花过多时间来考虑物体的表面细节。

步骤:

1、定义纹理对象

2、控制纹理

3、设置映射方式

4、加载纹理并绘制场景

5、删除纹理对象

纹理定义:void glTexImage1D()(一维纹理)void glTexImage2D()(二维纹理)纹理控制:void glTexParameter{if}[v]()纹理映射方式:void glTexEnv{if}[v]()指定纹理坐标:void glTexCoord{1234}{sifd}[v]()删除纹理对象:void glDeleteTextures()论述题

1、什么是三维GIS,三维地形处理技巧有哪些

三维GIS是指对空间对象进行真三维描述、可视化和分析管理的地理信息系统,它既要提供较高的三维可视化效果,又要满足大范围的显示,还要提供全面的类似二维GIS中的地理信息查询与分析功能。

等高线图(vec.)转成dat.文件,再用winsever转为Grid.文件,再处理成tif.格式的文件。四叉树:是使用四个子节点递归地将空间进行分割的方法,整个地形在第一阶段被分割为1/4,分割后的地形在第二阶段再次被分割为1/4,地形就这样递归地一次分割下去。使用四叉树的最大理由就是可以快速检索到巨大的地形,用大块单位消除无用数据,快速缩减3D引擎必须处理的数据量。

平截头体:整个三维世界中,有大量的多边形和物体,其中,实际上需要渲染的只是摄像机视野内的物体,其余部分不需要渲染,这就是平截头体的剔除。平面方程式是一种定义无限平面的数学工具,即采用简单的公式表示平面,ax+by+cz+d=0点在平面上,ax+by+cz+d>0点在平面前方,ax+by+cz+d

四叉树与平截头体结合:如果四叉树的父节点不在平截头体内部的话,那么子节点也不在平截头体内部,这时,只要检索父节点在平截头体内部的节点就行了,反复进行这个过程就可以快速地实现平截头体的剔除。基于四叉树的LOD表示:LOD是分阶段调整网格建模数据的精密度技术,与摄像机的距离近,使用精密的网格,距离远,使用简单的网格。LOD分割形成的阶段与四叉树的子节点分割十分相似,当摄像机和各个节点的中点距离不同时,与摄像机距离远的节点不进行子节点的渲染,只在各自阶段进行渲染,相对而讲,与摄像机越近、越是对下层子节点进行渲染。这样通过渲染位于不同层的节点来实现对特定区域不同分辨率的表示。

2、OSG场景

场景管理:osg采用包围体层次来实现场景图形的管理,用一个场景树管理整个场景的相关信息,通过场景树可以方便的管理场景物体,并且在向底层接口提交绘制操作前进行一些软裁剪和绘制顺序调整工作。分层的树状数据结构来组织空间数据集,提升了渲染的效率。场景组成模块:

1、osg核心库:osg库:基本数据类,负责提供基本场景图类、节点类、状态类、绘制类、数据类;osgUtil库:工具类库,提供通用的公用类;osgDB库:数据的读写库,提供一个文件工具类;osgViewer库:视窗管理库

2、OSG工具库:osgFX库;osgParticle库;osgSim库;osgTerrain库;osgText库;osgShadow库

3、OSG插件库

4、OSG内省库 BVH树:包围体层次树,采用自顶向下的结构,顶部是一个根节点,从根节点向下延伸,各个组节点中均包含了几何信息和用于控制其外观的渲染状态信息。根节点和各个组节点都可以有零个或多个子成员。在场景图形的最底部,各个叶节点包含了够长场景中物体的实际几何信息。

节点:OSG的场景结构树是一棵有向无环图(Directed Acyclic Graph),可以多个父节点共享一个子节点。节点主要分三类:根节点,枝节节点,叶子节点。

 Node:Node 类是场景图形中所有节点的基类。它包含了用于场景图形遍历、拣选、程序回调,以及状态管理的方法。

 Group:Group 类是所有可分支节点的基类。它是场景图形空间组织结构的关键类。主要用于将多个子节点成组管理,允许用户程序为其添加任意数量的子节点,子节点本身也可以继续分法子节点,osg编程的核心部分,它使得用户应用程序可以有效组织场景图形中的数据,它的强大之处在于管理子节点的接口,还从Node出继承了管理父节点的接口。

 Geode:Geode 类(即Geometry Node)相当于OSG 中的叶节点。它没有子节点,但是包含了osg::Drawable 对象,而osg::Drawable 对象中存放了将要被渲染的几何体。 LOD:LOD 类根据观察点与图像子节点的距离选择显示子节点。通常使用它来创建场景中物体的多个显示层级。

 MatrixTransform:MatrixTransform 类包含了用于实施子节点几何体空间转换的矩阵,以实现场景对象的旋转、平移、缩放、倾斜、映射等操作。 Switch:Switch 类用布尔掩板来允许或禁止子节点的运作。

用智能指针管理节点间的父子关系:由于OSG中与场景图形有关的大多数类均派生自Referenced类,因此OSG大量使用了智能指针来实现场景图形节点的管理。智能指针的使用为用户提 供了一种自动内存释放的机制,即,场景图形中的每一个节点均关联一个内存计数器,当计数器的计数减到零时,该对象将被自动释放。而用户如果希望释放整个场 景图形的节点的话,则只需要删除根节点,根节点以下的所有分支节点均会因此被自动删除,不用担心内存泄露的问题。

OSG节点的访问:OSG中节点的访问使用的是一种访问器模式。一个典型的访问器涉及抽象访问者角色(Visitor), 具体访问者(Concrete Visitor), 节点角色(Node)。OSG中访问者角色为NodeVisitor类,NodeVisitor 只是访问器角色的抽象接口,要使用访问器访问节点并执行自定义操作时,需要继承并重写apply(……)函数实现自定义功能。osg::Node类中的访问接口为 void accept(NodeVisitor& nv)。对节点的访问从节点接受一个访问器开始,将一个具体的访问器对象传递给节点,节点反过来执行访问器的apply(...)函数,并将自己传入访问器。遍历节点树:osg::Node类中有两个辅助函数:void ascend(NodeVisitor& nv)//虚函数,向上一级节点推进访问器void traverse(NodeVisitor& nv)//虚函数,向下一级节点推进访问器

《郑州大学三维GIS考试重点总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
郑州大学三维GIS考试重点总结
点击下载文档
相关专题 gis空间分析复习总结 考试 郑州大学 重点 gis空间分析复习总结 考试 郑州大学 重点
[其他工作总结]相关推荐
    [其他工作总结]热门文章
      下载全文