如何用opengl 正弦函数实现函数可视化

基于opengl的流场数据可视化技术,流场推力矢量喷管,流场分析,流场分析软件,常数流..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于opengl的流场数据可视化技术
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口2343人阅读
基本概念以及数字地面模型和构网技术,阐述了
关键词:;三维;可视化
based on OpenGL
In this paper, it introduces the basic concept of OpenGL, DTM and technology of constructing network, elaborates the basic steps to realize 3D topographic visualization based on OpenGL, and studies and discusses the important step. Finally it realizes the mutual topographic real-time dynamic exhibition by keyboard.
OpenGL; 3D; Visualization
三维地形可视化是地理信息系统()、数字摄影测量()和遥感()的重要研究内容。三维地形可视化是研究数字地形模型()或数字高程域中显示、简化、仿真等内容的学科,它属于计算机图形学的一个分支。近年来,由于计算机科学、计算机图形学以及现代数学理论的不断发展和创新,虚拟现实()、科学计算可视化()逐渐成为众多学者研究的热门。当前在国内外竞相研制三维数码城市、三维数字小区的氛围下,研究三维地形可视化有着广阔的应用背景,越来越受到人们的关注。
2 基本概念
是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。实际上是一个开放的三维软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;使用简便,效率高。它具有七大功能:建模、变换、颜色模式设置、光照和材质设置、纹理映射、位图显示和图像增强、双缓存动画;可以与紧密接口,便于实现机械手的有关计算和图形算法,可以保证算法的正确性和可靠性。为了利用6.0的强大功能来实现对三维图形的绘制提供了和动态链接库包含了库openg132 . lib、辅助库 glaux .1ib和实用库glu32 .1ib开发者可以在多种硬件平台及操作系统下方便地利用这个图形库使我们方便地编程简单、快速地生成美观、漂亮的复杂的三维彩色图形。
2.2 数字地面模型及其构三角网技术
数字高程模型()是地形空间连续起伏的数字表达,它由对地形表面取样所得到的一组点的(X、Y、Z)坐标数据和一套对表面提供连续描述的算法组成。
DEM的最常见形式是高程矩阵或称为规则矩形格网,它可以由对不规则或规则的空间数据点进行插值获得。的另一种表现形式是不规则三角网(),是一个使用一系列连续相邻的不规则三角形组成的地面模型,X坐标和Y坐标间距不定。这两种表现形式相比之下,模型能较好地顾及地貌特征,允许在地形复杂的地区收集较多的信息,其数据冗余少,简化数据可能带来的失真也较小,所以本文建立三维地形模型中运用的是不规则三角网()。
计算机图形学中的所有光滑曲面最终都是由多边形(主要是三角形)无限逼近得到的。因此建立曲面模型的实质是构造用来逼近该曲面的空间三角网。利用采集到的离散点根据三角网的构网规则生成三角网。三角形定义为:组成三角网的每个三角形不包含数据点集中除构成该三角形三顶点以外的任何其它点,即三角网能最大限度地保证网中三角形满足近似等边(角)性。对于任意给定的离散数据点集,三角网的网形是唯一的。
3 三维地形的可视化
实现三维图形可视化首先要解决建模问题。目前建模方法主要有两种:(1)用和等建模工具建立三维模型;(2)直接利用OpenGL或VRML等专用建模语言完成建模。&&&&
本文是直接利用建模。在中实现三维地形可视化的基本过程是:先收集DEM数据,然后进行模型构造,接着求每个顶点的法向量,通过的相关函数来实现参数设置,之后是进行光照计算、投影变换、视口变换和纹理映射,最后实现三维地形的显示。以下将重点分析投影变换和纹理映射和绘制虚拟场景三个部分。
3.2 纹理映射
自然界中的物体表面很少是光滑和单调的,往往具有各种纹理。在计算机图形学中是采用纹理映射的方法给计算机生成的物体图像加上纹理的。纹理映射的关键是实现影像与DTM之间的正确套合,使每个DTM网格点坐标和相应的纹理坐标一一对应,保证纹理在变换时与所附着的曲面保持适当的关系。纹理映射是非常复杂的。在中纹理映射需要执行的步骤如下:
(1)定义纹理。纹理通常被认为是二维的,但纹理也可以是一维或三维的。通过函数()指定一个二维纹理,其中包含了纹理图像的大小、纹理图像数据的数据格式和数据类型以及存储在内存中的图像数据指针等。
(2)控制纹理。用来说明纹理以何种方式映射到三维模型的表面上。一种方法是,将纹理颜色作为最终的颜色,另一种方法是,使用纹理来调整片元的颜色值,还有一种就是将一种常量颜色和片元混合起来。中提供了相关的函数为()。
(3)启用纹理映射。绘制场景之前需要启用纹理映射。要启用和禁用纹理映射,可以调用函数()和()。调用这些函数时可以使用一维、二维、三维和立方图纹理映射。
(4)纹理坐标和绘制场景。粘贴纹理之前,必须指定纹理和片元之间的对应关系。也就是说,在场景中绘制物体时,必须指定纹理坐标和几何坐标。调用的函数是()。
3.3 绘制虚拟场景
4 利用OpenGL进行地形动态显示
实现地形三维实时交互显示有两种方式:一种是视点固定、目标移动,该显示方式实现起来比较容易;另一种是目标固定、视点移动,这种显示方式实现起来比较复杂一些。本文运用第二种方式实现了地形动态显示。在计算机屏幕上可以通过键盘对三维地形进行操作,能够从各个不同的角度形象、直观地展示三维地形。仿真效果如下图:
&& 本文利用强大的图形功能在三维地形模拟方面进行了有意尝试,在实践中取得了很好的效果,通过键盘进行人机交互,最终实现了三维地形的可视化。但有些地方还有很多的不足!我相信随着计算机以及图形处理设备性能的不断提高,计算机模拟现实技术在国民经济以及国防建设中的作用日益增大,必将把三维地理信息系统带入飞速发展的时代。
参考文献:
[1] 廖中石,杨化超.基于的三维地形实时动态交互显示.现代测绘,第27卷第3期:43-44
[2] 张俊霞.三维地形可视化及其实时显示方法概论.北京测绘,2001年第2期:6-9
[3] 徐青.地形三维可视化技术[M].北京:测绘出版社,2000: 141-150
[4] 韩样.基于的三维地形可视化方法研究.车辆与动力技术,2003年第2期:11-15
[5] 李权国,刘鸿福. 在三维地形模型中的应用.太原理工大学学报,第35卷第1期:36-38、42
[6] 靳海亮,高井祥. 三维地形可视化技术进展研究.测绘科学,2006年第6期:162-164
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3727056次
积分:49375
积分:49375
排名:第33名
原创:71篇
转载:3792篇
评论:772条
声明:早期转载的文章未标明转载敬请原谅,以后将陆续改过来,向原创者致敬!
有问题可留言
痞子龙3D编程
QQ技术交流群:
(12)(128)(159)(168)(40)(45)(43)(38)(5)(6)(7)(2)(3)(7)(24)(5)(5)(16)(17)(16)(66)(7)(55)(2)(37)(16)(1)(10)(6)(37)(5)(31)(18)(31)(128)(333)(203)(256)(59)(78)(57)(16)(39)(10)(27)(16)(8)(26)(32)(53)(56)(45)(142)(228)(6)(10)(6)(9)(6)(9)(22)(25)(18)(83)(208)(442)(111)(32)(1)DNA的三维可视化:通过OpenGL实现一个DNA链 - 博客 - 伯乐在线
& DNA的三维可视化:通过OpenGL实现一个DNA链
我最近在Coursera上开始了一门课程(数据库和算法,顺便提一句,这是普林斯顿大学开设的一门很牛的课程)。现在上了几次课,我发现这些编程课都相当困难,我的(自我缓解编程困难的)方法则是在OpenGL上编一些小东西来减压。
做三维模型编程最棒的一点就是你可以看到你代码的成果(这也是编程的一个动机)。3D编程是一个很强大的可视化工具,通过编码实现DNA的结构是一个有趣并且富有挑战性的任务。其具有挑战性主要是因为OpenGl代码所带来的局限性。我相信DNA结构在数学方面的实现是很简单的。
关于代码和DNA结构
1. DNA是双螺旋结构,有个带状结构从不同的角间距中连接着这两个螺旋。我用GL_QUADS来绘制两股螺旋和其中的带子。这些四边形的坐标可以通过以下方式来获得:
x1 = 40*cos(angle*GL_PI/180);
z1 = 40*sin(angle*GL_PI/180);
x2 = 40*cos((angle+10)*GL_PI/180);
z2 = 40*sin((angle+10)*GL_PI/180);
顶点的输入则是(10是双螺旋带的宽度)——
glVertex3f(x1 , yOld1 , z1);
glVertex3f(x1 , yOld1+10 , z1);
glVertex3f(x2 , yNew1+10 , z2);
glVertex3f(x2 , yNew1 , z2);
而b/w yOld1和yNew1之间的关系表达式如下:
yNew1 = yOld1+3;
2. 对于连接两个螺旋带的中间的带状,我用了C++中的结构体数组来存储x,y和z的值,它们相应的点都对应在两个螺旋带的连接点上,它们也是通过GL_QUADS来连接的。之后通过一个简单的”for“循环来连接它们。
struct strand
我已经分别采取了+60和-60,+120和-120度的连接角,因此无论何时,在第一个螺旋上的经过角都为60度或60+360n度,或者第二个角上的120+360n度。我已经将x,y和z的对应值加到结构数组中去了。
之后一个简单的for循环将连接x,y和z与GL_QUADS来完成工作。
如果你想了解关于DNA链的颜色或是照明的信息,它是用(GL_DIFFUSE)分配给双螺旋和带子的一些材质。
下面是一些截图:
(分别为缩小图和特写图)
条带数可以通过增加n的值,减小连接角来一直增加,其中的n代表的就是条带的数目。
与此相关的也有许多很有趣,我想我将会尝试在某天做一个由球面(表示实际分子)组成的相同的DNA。
完整的代码将很快传到GitHub上!
更新——代码已经上传了,链接是:
关于作者:
可能感兴趣的话题
OpenGL 代码以 shader 为主流,文章中的写法缺点很多,早已淘汰。
最新评论(期待您也参与评论)
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
欢迎关注更多频道
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选博客文章
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
(加好友请注明来意)
网站使用问题
请在询问或者反馈
& 2015 伯乐在线
赞助云主机}

我要回帖

更多关于 opengl dot函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信