范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

干工程的都想知道三维地形可视化实现技术

  近几年来,随着计算机技术,特别是计算机图形学、网络、多媒体、三维仿真技术、虚拟现实技术的快速发展,给二维电子地图注入了新的活力, 基于三维虚拟场景的三维电子地图正成为电子地图发展的一个重要方向。但是三维电子地图的基本模型必须从三维地形模型制作出发, 三维地形模型就是把数字形式的地形数据转换成三维仿真的地形模型,它的制作也是电子游戏、电子沙盘和虚拟现实以及三维地理信息系统应用的基础, 其制作的精度直接影响着整个应用的视觉效果。本文介绍在 VC++ 开发平台上基于 OpenGL 的三维地形动态模型的建立及其应用。
  OpenGL 的工作原理整个 OpenGL 的基本工作原理流程图如图 1 所示。
  图 1 OpenGL 基本工作原理流程
  由于三维地形模型是三维地理信息系统(3D2GIS) 最基本的地形模型, 因此它的建立和应用是国内外地理信息系统界研究的一个热门课题,也是多年来一直在不断完善和更新的一个难点问题。三维地形模型是关于三维空间数据组织的概念和方法, 它反映了现实世界中仿真的地形曲面。对三维空间数据模型的认识和研究在很大程度上决定着三维 GIS 的发展和应用的成败。很多学者为此进行了大量的探索和研究工作,然而,由于三维空间数据的庞大和复杂多样性, 至今人们对三维数据地形模型问题还远远没有达到共识。
  1、用 OpenGL 建立三维地形模型
  在 VC+ + 开发平台下利用 OpenGL 图形开发库函数,可以利用原始的地形数据构造三维地形模型, 其原始的地形数据包括地理坐标( X , Y ) 和高程值( H) 。OpenGL 共包括 100 多个功能强大的图形函数, 开发人员可以利用这些函数来建立三维模型和进行三维实时交互。这些函数分属于三个基本图形库,即基础库、实用库和辅助库。OpenGL 的基本功能包括:模型绘制、模型观察、颜色模式的指定、光照应用、图像效果增强、位图及图像处理、纹理映射、多缓存应用、实时动画、交互技术等。
  1)采集数据
  首先利用二维的平面电子地图采集生成三维地形模型所需的数据,主要包括三维地形模型所在区域离散点的平面地理坐标(X , Y) 和高程值( H) ,根据坡度和地形起伏变化控制离散点的稀密状况, 如果地形起伏比较大则数据点的采集也要相应的密度大一点,否则可以减小离散点的采集密度以减小数据量。
  2) 构造三角网
  计算机图形学中的所有光滑曲面最终都是由多边形 (主要是三角形) 无限逼近得到的,因此建立曲面模型的实质是构造用来逼近该曲面的空间三角网。利用采集到的离散点根据 Delaunay 三角网的够网规则生成三角网。为了动态更新地形模型数据,我们将数据存放为文本文件(其后缀为. txt) ,以便随时调用和更新。文件中的第一个整数是三角网的采样点个数, 接下来的浮点数是采样点的地形特征数据,其排列方式为从左到右( Xi , Yi , Hi ) ,其间用逗号隔开,每一行的数据个数为一个。
  3)利用地形数据建立地形模型
  以 Visual C+ + 6. 0 为开发平台时调用 OpenGL 库函数一般要进行如下设置,选择 Project 菜单下的 Setting 选项,在弹出的对话框 Link 栏的 Lib 输入框中添加 openg132.lib ,glu32.lib 及 glaux.lib. 在程序中包含以下头文件:
  # include "gl  gl. h"
  # include "gl  glu. h"
  # include "gl  glaux. h"
  并且调用以下函数进行窗口的初始化:
  auxInitDisplayMode (AUX SIN GL E| AUXRGBA| AUX DEPTH) ;
  //窗口显示单缓存和 RGB(彩色) 模式
  auxInit Position (0 ,0 ,500 ,500) ;
  //大小 x = 500 , y = 500 (0 ,0) 是屏幕左上点
  auxInitWindow("三维地形模型") ;
  //窗口初始化,参数是标题gl ClearColor (0. 0 ,0. 0 ,0. 0 ,0. 0) ;
  //将窗口清为黑色gl Clear ( GL COLOR BUFFER BIT) ;
  //将颜色缓存清为 gl ClearColor 命令所设置的颜色
  //即背景色调用以下函数绘制具有颜色设置的三角形并且建成三维的地形模型表面:
  gl Begin ( GL TRIAN GL E) ;gl Color3f (R ,G,B) ;
  //颜色设置gl Vertex3f ( x 1 , y1 , h1) ;
  gl Vertex3f ( ( x2 , y2 , h2) ;
  gl Vertex3f ( ( x3 , y3 , h3) ;
  …gl Vertex3f ( x i , yi , hi) ;
  …gl End () ;
  然后可以调用下列函数对地形模型进行光照和材质的处理:
  void gl Light { if } [ v ] ( GLenum light , GLenumpname ,TYPE param) ;
  void gl Material {if } [ v ] ( GLenum face , GLenumpname ,TYPE param) ;
  2、基于 OpenGL 的三维真实感地形的生成
  用 OpenGL 生成三维真实感地形的基本过程如图 2 所示:
  图 2 用 OpenGL 构造三维地形景观流程图
  1)数据准备
  用于构造三维真实感地形的数据 包 括 DEM 数 据 和 纹 理 数据。相关区域的 DEM 的获取有实地采集法、摄影测量法、现有图数字化法。DEM 一般采用格网点格式。DEM 数据的处理包括不同格式 DEM 间的转化、DEM 数据简化、格网 DEM 与 TIN 间的相互转化等; 纹理数据的处理包括图像格式转化、图像裁切等。由于OpenGL 所处理的影像纹理大小必须为 2m ×2n (m ,n 为整数) ,则必须对正射影像进行分块或重采样处理, 以满足 OpenGL 纹理映射的需要。
  2)设置各项基本参数
  在用 OpenGL 绘制三维真实感地形模型和进行纹理映射前,需要设置相关的景观参数值。首先应对图形操作描述表(RendingContext ) 以及像素格式(Pixel Format) 进行创建和设置;其次对光源性质(镜面反射光、漫射光、环境光) 、光源方位(距离和方向) 、颜色模式(索引模式或 RGBA 模式) 、明暗处理方式(平滑处理或平面处理) 、消隐模式、纹理映射方式等;也可根据相关函数设置三维真实感地形模型的颜色值和对光照的反射特性。除此之外还需设定视点位置和视线方向。这些参数设置都可以通过对 OpenGL 的相关函数的参数选择来实现。
  3)构造三维真实感地形模型
  OpenGL 的基本几何对象都是围绕顶点来建立的, 而对顶点来说最重要的信息是由 gl Vertex3 () 命令提供的坐标。值得注意的是,在 OpenGL 中几何对象顶点的坐标值、法线、纹理坐标和颜色等都必须包含在 gl Begin () 和 gl End () 函数对之间,否则就不会有任何绘制出现。三维真实感地形模型的基本构造通常是以三角面为单元的。三角面的明亮程度除取决于光源和明暗处理方式外,还受到点与面的法向量的影响。一般点的法向量取值为其周围面法向量的均值。这样三维模型的构造可由下列程序给出:
  gl Begin( GL TRIANGL E STRIP) ;
  gl Normal3fv(N0) ; / / 设置顶点法向量
  gl Vertex3f (v0) ; / / 设置顶点坐标
  gl Normal3fv(N1) ; / / 设置顶点法向量
  gl Vertex3f (v1) ; / / 设置顶点坐标……gl End() ;
  构造模型的同时,还可以对模型进行平移、旋转将其移至三维空间的适当位置, 通过适当的缩放使三维真实感地形与三维空间景物的比例相协调。
  4)投影和视区变换
  投影变换一般分为透视投影变换和正交投影变换两类。投影方式的选择取决于显示的内容和用途。由于透视投影类似于人眼对客观世界的观察方式, 因而广泛应用于三维地形模拟、飞行仿真、步行穿越仿真等模拟人眼视觉效果的研究领域。正交投影的物体或场景的几何属性不变,视点位置不影响投影的结果,如果需要观察模型某一个侧面不带有形变的景观, 则更多采用正交投影方式,如制作地形晕渲图则一般采用正射投影方式。本文选择透视投影,函数为 gluPerspective ( ) ,OpenGL 只绘制位于视景体内的对象,所以在设置 gluPer2spective 的参数时,应充分考虑地形范围的大小以便选择合适的视景体范围。视区是指计算机屏幕中用来绘图一个矩形区域,缺省的视区与窗口一样大,它用窗口坐标来度量,反映了屏幕上的像素位置。视区相对于窗口的左下角。视区变换就是将视图体最后三维空间坐标映射为计算机屏幕上的二维平面坐标。视区变换用函数 gl Viewport (0 ,0 ,cx ,cy) 实现,视区的宽高比通常等于视景体的宽高比, 否则视区内显示的图形将会发生形变。根据视区变换后视区内每一点的 Z 坐标值,OpenGL 可以自动判断点的前后实现消隐功能, 使得靠近视点的目标能够遮挡视区同一位置远离视点的目标。
  5)纹理映射
  自然界中的物体表面很少是光滑和单调的, 往往具有各种纹理, 在计算机图形学中是采用纹理映射的方法给计算机生成的物体图像加上纹理的。纹理映射是建立逼真三维地形景观的重要手段,不采用纹理映射所得到的地形模型仅仅是具有明暗效果的光照模型,光照模型可以按照高程值进行过渡着色或分层设色。它能够直观地反映地表起伏状况,但不能重现地表的真实面貌。一般纹理映射的思路是把纹理图像"贴"到由 DEM 数据所构成的三维模型上。其关键是实现影像与 DEM 之间的正确匹配,使每个 DEM 格网点与其所在的图像位置一一对应。为提高纹理映射的运算效率,通常采用预处理好的与 DEM 坐标相对应的图像作为纹理以免除纹理坐标的计算。用 OpenGL 函数进行纹理映射的基本步骤为:①纹理定义: OpenGL 要求纹理图像的尺寸必须是 2 的幂,且不能大于 1024 字节。用 gl TexIm2age2D() 函数说明所映射的纹理内容。其中包括纹理数据的指针、纹理的大小、纹理的类别(灰度或彩色) 等。如果没有原地形的正射影像,用户也可根据地形特点设计自己的纹理图像。②纹理控制: 说明纹理以何种方式映射到三维模型表面上。OpenGL 提供了多种映射方式, 其中包括纹理滤波、重复与伸缩,其函数为 gl TexPa2rameterf () 。③纹理映射方式说明:在纹理映射过程中,可以用纹理来调整三维模型的颜色或者将纹理与三维模型原来的颜色进行融合,其调用函数为 gl Tex2Envf () 。④启动关闭纹理映射: 在绘制某一个场景前必须调用 gl En-able ( GL TEXTURE 2D) 来启动纹理映射,结束时调用 gl Disable (GL TEXTURE2D) 。⑤三维地形模型顶点的纹理坐标与几何坐标定义及场景绘制:几何坐标决定了顶点在屏幕上的绘制位置,其调用函数为 gl Vertex 3 ( ) ;纹理坐标决定纹理图像中哪一个纹理单元赋予该顶点,其调用函数为 gl TexCoord 3 () ,几何坐标和纹理坐标必须匹配。
  6)三维地形交互式动态显示
  按照人们的视觉习惯,总是希望在原点(或其他方便位置) 处构造所需画面,然后从一个较佳的位置观看该画面。OpenGL 自带的实用库函数 gluLookAt ( ) 正是为这个目的而设计的,故可以采用此库函数来实现虚拟场景的观察变换。glu2LookAt () 库函数的原型如下:
  void gluLookAt ( GLdouble eyex , GLdouble eyey ,GLdoubleeyez , GLdouble centerx , Gldouble centery , GLdou2ble centerz ,GLdouble upx , GLdouble upy , GLdouble upz)其中: 前三个参数 eyex、eyxy、eyez 指定视点(眼睛) 的 位 置;中间三个 centerx ,centery ,centerz 指定沿着所需视线上的任一点(参考点) 的位置;upx ,upy ,upz 指定向上的矢量方向(观察向量) 。地形透视图形成后, 可为应用程序加入鼠标和键盘的消息响应函数,并将视点、视角、模型旋转角度等设为变量作为消息响应函数中的控制参数,从而可以交互式地从不同角度观察三维地形,来实现三维真实感地形场景的漫游效果。
  随着计算机及图形处理设备性能的不断提高, 地形三维可视化技术正向着实时动态显示、交互式控制、具有高度真实感的场景画面显示方向发展, 利用 OPENGL 强大的图形功能,可以轻松地实现逼真的动态地形图。在此基础上,运用 VisualC++的 MFC 应用程序模式, 可对 OPENGL 产生的模型进行更进一步的控制和变化。试验结果说明利用 VC++6.0 和 OpenGL 作为开发工具来进行三维地形图的开发非常方便快捷, 是一条切实有效的途径。

四大行正式宣布,4月1日人民币迎来大升级微信支付宝被淘汰随着社会的发展,人们的生活也随着科学技术的进步而改变。实际上,每个人都会有这样的亲身经历。现在他们出门的现金越来越少,但是使用手机的频率越来越高,一方面是因为智能手机的普及度越来越微信发布最新通知,4月1日这两大功能开始收费12亿用户受影响2011年,被称作微信的起始年。目前为止,微信已投入市场9年,其使用者达数十亿人。它不但涵盖了在我国90之上的群体,还涵盖了其他的200多个国家和地区超出了20种语种。可以说,微信央行还是出手了,4月1日起,在银行有以下存款的储户将永久冻结在我们的日常生活中存钱相对普遍,因为银行相对安全并且可以随时访问,并且现在有多种财务管理方法,而银行存款已成为财务管理的首选。它已经成为每个人心目中安全的财务管理方法,但是银行也开中国已允许银行倒闭,哪些银行存钱最安全?看完明白了!随着现在社会经济的飞速发展,在这个物价飞涨的年代里,我们每个人都在努力地进行工作着,祈求自己可以尽大力度地为家庭与自己的儿女带来更好的生活享受,并竟现在今时不同于往日,我们对待生活再见了,ATM机!4月1日起银行取钱出新规两地已开始正式执行说到ATM机,相信都并不陌生。ATM机诞生之初,曾被银行业称为跨时代的创新,它的存在是为了减轻银行存款和取款的压力。毕竟,通过ATM机提款非常方便快捷,而无需员工每天24小时值班,中国第一位女首富靠收废品,做到420亿身价,她凭啥?在生活中,很多人都不太看得起收废品这个行业,觉得他们是底层工作者。可是这些人不知道的是,看着脏乱差的这个行业,隐藏着诸多富豪。就连我国第一位女首富,也是靠收废品起家的,如今身价超4美国人比中国人更懂科学吗?懂这个词用的很讲究,你要说别的我肯定马上给出回答,但是懂就很微妙了。你说中国人和美国人谁更尊重科学,那一定是中国人,在中国连骗人也要搬出一个专家来,塞先生虽然在新文化运动里基本只出3月23日开始,你准备好过苦日了吗?银行行长这才是硬货但是,知道经济常识的人认为拥有现金是财富贬值。无论是听说过的自己意识到的还是书上的,总之货币贬值和如何抵抗货币贬值都成为了全国人民的不安。从3月23日开始,你准备好过苦日了吗?银行4月10日护住你的存款,央行发布通知以后存钱先看这一点!很多高危工作依旧有人去,其实也是因为这些工作的薪水都比较高。在如今这个现金社会中,兜里有钱还是很重要的。有了钱之后,有人会选择投资,想着钱生钱。不过,对很多赚辛苦钱的人群来说,存在中国已允许银行倒闭,4月25日起怎么存钱最安全?看完就明白了这个集团一直相信,银行是由政府托底的国有单位,很安全,不会出现破产倒闭的情况。但是随着时代的发展,银行市场越来越大,现代企业无一例外都需要好的管理,需要许多竞争对手,需要自负盈亏。新版人民币发行近两年,为何是罕见币?终于有了答案为了提高人民币的防伪功能,使人民币在流通中更具耐用性,早在2019年8月30日,央行就发行了2019年版第五套人民币,当时除了100元5元面额没有发行之外,其他面额的人民币都已经有
欧盟投上万亿发展2nm工艺英飞凌唱反调没人会用半导体技术对未来的重要性已经无需多说,现在世界主要国家和地区都在积极发展,其中欧盟也希望在先进工艺上分一杯羹,去年17个欧盟国家推出新计划,将投资1450亿欧元,约合1。2万亿人民发现永生契机?移植龙虾基因后,人类或将突破基因限制永生起死回生可以说是科幻电影中的老套路了,生命有限,所以我们才会在有限的时间内做更多的事情,但如果可以永生呢?又或者,如果可以起死回生,你又希望复活做些什么?今天009就来和大家讲再获突破!中国人造太阳成功放电,能否改变当下能源格局?太阳中心有着2000万的高温,放在地球表面足以融化一切事物,而在这样的情况下,你能否想象凭借当今的科技,人们能够创造出太阳并加以利用?大家好,这里是奇闻密探009,今天009给大家天然人类分子被发现能阻断帕金森病相关蛋白的有毒形式专门负责合成多巴胺(大脑的主要神经递质之一)的神经元的死亡,使帕金森病患者的运动和认知能力恶化。这些神经元的丧失与突触核蛋白的聚集有关。最近的研究表明,寡聚体,即这种蛋白质的初始聚地球运行的速度有多快?地球在太空中飞驰,地球在不停地移动。当它围绕太阳转时,地球也绕着它的轴线旋转,就像运动员指尖上的篮球一样。那么,地球运行的速度有多快呢?换句话说,它绕轴旋转的速度有多快,绕太阳运行信息的传播速度能超过光速吗?爱因斯坦狭义相对论的信条之一是,没有什么东西能在真空中以比光速更快的速度传播。光速被认为是一切事物的普遍速度极限,这一点被科学界广泛接受。但在科学领域,如果你制定了一条硬性规定,就科学家研制出减肥器被网友嘲笑科学家们在开发出一种世界上第一个减肥器,这种减肥器可以让人们闭上嘴,迫使他们吃纯流质的食物。一些推特用户质疑该装置的伦理和实用性,而另一些人甚至将其比作中世纪的酷刑装置。这种名为饮反重力引擎英国科学家UFO是美军科技,调查报告只是烟雾弹6月25日公布了期待已久的美国情报界UFO调查报告,其中有几个相当引人注目的关注点,比如美国防部副部长凯瑟琳希克斯(KathleenHicks)欲言又止的发言,还有在报告中描述其超科学家无限放大130光年外,最大白矮星正在形成,它即将爆炸很难想象地球失去太阳的后果!因为没有太阳的光和热,地球将陷于冥王星般连氮气都冻成冰的世界,有了阳光,地球才形成了万千世界!但没有人能想到的是太阳的未来将成为一颗白矮星,最终形成的大科学家证明了4维空间的存在,假如人类进入4维,会变成什么人?1687年,牛顿发表了自然科学的哲学原理,时空观从天圆地方进化为平直的绝对失时空,在牛顿的时空观中,空间是平坦的不存在褶皱!这个平直的时空观一直到1854年6月10日,大神黎曼在哥伸张正义,新一代马绍尔群岛人抗议美国核遗产在美军开始将马绍尔群岛作为核武器试验场75年后,马绍尔群岛的新一代人要求伸张正义。1946年7月1日,当比基尼环礁被引爆时,阿尔森凯伦的家人也在被迫离开棕榈树环绕的祖居的人之列。几