- 2.36 MB
- 66页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档由网友投稿或网络整理,如有侵权请及时联系我们处理。
大连理工大学硕士学位论文堤坝施工进度的可视化仿真研究姓名:刘雪峰申请学位级别:硕士专业:水文学及水资源指导教师:王子茹20060616\n大连理工大学硕士学位论文摘要施工进度计划是施工组织设计的中心内容,是在承包合同规定的条款下,在规定施工方案基础上对各分部分项工程的开始和结束时间作出具体的日程安排。传统的施工进度表示方法是采用水平图表(横道图)、垂直图表和网络图的形式。随着工程规模的不断增大和施工水平的不断提高,这种施工进度的单纯的图表表示方法已不能满足施工技术人员对工程施工进度整体把握的要求。计算机可视化仿真技术为解决这一问题提供了有效的手段。本文结合堤坝施工进度开展了可视化仿真研究,着重探讨了堤坝施工进度三维可视化仿真原理,并在VC++的平台上基于Or’enGL开发了堤坝施工进度可视化仿真软件,实现了可视化技术与仿真技术的有机结合。研究的内容和成果概述如下:(1)按施工要求,建立了堤坝施工进度可视化系统的总体框架,并按系统功能分为数据输入子系统、查询子系统、基坑仿真子系统和堤坝方针子系统。(2)针对堤坝施工进度可视化仿真系统的开发,简介了系统的开发平台,阐述了开发该系统的技术路线和理论方法。(3)建立了基坑开挖线的计算模型,将vc++融合OpenGL技术,实现了堤坝坡脚线的数值解法及图形可视化,给出了土方量的计算模型。(4)开发了堤坝施工进度可视化仿真系统,该系统是一个面向对象的开放的系统,具有友好的操作界面、易于操作、方便快捷等特点,其功能概述如下:①数据文件的读取。将大坝及周边地形的三维数据以序列的形式存储在文档中,软件自动读取。②大坝施工进度面貌及其周边地形的三维显示。包括大坝施工阶段典型面貌的单体及整体网格图、渲染图的显示、大坝施工典型阶段的剖面图、横道图、柱状图等。③光照及材质的编辑。用户可以根据需要来编辑材质、光照,以达到最佳显示效果。④查询功能。可以查询软件及大坝的相关信息等。最后,对全文进行了总结,并对有待进一步研究的工作进行了展望。关键词:大坝施工进度、可视化仿真、VO++、0pengL\n堤坝施工进度的可视化仿真研究ResearchinvisualizationandsimulationofTheconstructionscheduleoftheDamAbstraot’11leplanofconstructionscheduleistheprimarycontentofconstrualorganizationandtheschedulearrangememindetailmadebystart-endtimeofeachbranchoftheprojectbasedontheconstrualplanstatedunderthedetailsstatedinthecontractualcompact.nleconventionalrepresentationmethodofconstructionschedulecanbedescribedasplanechart,verticalchartandnetchart.Withthedevelopmentofengineeringscaleandcontractualtechniques,thewayonlyinchartshasalreadynotbeenmeettherequirementofthemasteringofthewholecontractualschedulefortechnicians.喊lethetechniqueofComputerVisualizedSimulationprovidesitaeffectivemethod.T11ispaperbringsforwardtheprimarytheoryofthree-dimensionalVisualizedSimulationforthecontractualschedulefordams,anditopellsouttheVisualizedsoftwarebasedonVC++OpenGL.ItrealizesorganiccombinationforVisualizedtechniqueandSimulationtechnique.Bythevividdeseripfionsinthl-ee-dimensionalpictures,thesoftwareprovidesaqmcHymethodformasteringthewholecontractualprocess,andimprovesthemodemlevelfortheorganizationsofdamhugely.Itcancart3,outtheseveralfollowingoperations:(1)nlereadfordatatexts.Ifwedepositthedam’sthree-dimensionaldatainlistinthetexts,itcanreadthemautomatically.(2)nethree-dimensionaldisplayforthevisageofthedam,suchasthemonomerandthewholenetpicturesduringtheperiodofthedam’scontraction,romanticpicture,sectionpicture,horizontallinepicture,columnpicture,andsoon.(3)111eeditionofthelightingandmaterial.Clientscaneditthelightingandmaterialaccordingtotheirrequirements.(4)nlesketchtransformationoperation.Itcancarryonto也ebomsketchmove,0uervfunction.Itcallsearchsomeinformationaboutthedamandthesoftwareandthequantityoftheearthwork.nlissystemhasthefriendlyoperationinterface,operateseasily,convenientlyandfastetc.aswell.KeyWords:constructionschedule;VisualizedSimulation;VCH:OpenGL\n独创性说明作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得大连理工大学或者其他单位的学位或证书所使用过的材料。与我一同工作的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。\n大连理工大学硕士研究生学位论文大连理工大学学位论文版权使用授权书本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用规定”,同意大连理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论文。作者签名:导师签名:——年——月——日\n大连理工大学硕士学位论文1绪论1.1研究背景施工进度计划是施工组织设计的中心内容,是在承包合同规定的条款下,在规定施工方案基础上对各分部分项工程的开始和结束时间作出具体的日程安排。传统的施工进度表示方法是采用水平图表(横道图)、垂直图表和网络图的形式。随着工程规模的不断增大和施工水平的不断提高,这种施工进度的单纯的图表表示方法已不能满足施工技术人员对工程施工进度整体把握的要求。计算机可视化仿真技术为解决这一问题提供了有效的手段。可视化仿真是将数值仿真过程及结果增加文本提示、图形图像及动画表现,它利用了计算机可视化技术迅速、高效、直观和形象的特点,使仿真过程更加直观,结果更容易理解,并能验证仿真过程是否正确,这是计算机仿真的一个新的发展方向。可视化仿真借助予计算机的图形图像处理能力,将科学计算过程中及计算结果的数据用直观的图形图像输出的技术。它可以将数值仿真的结果~目了然的呈现在研究者面前,使人们直观的看到被研究现象的变化规律及分布情况。将科学计算可视化与数字模拟结合即为可视化仿真Ⅳs),它不仅提供计算结果的可视化输出,而且提供了用于人机交互的用户操作界面,工程人员可以根据环境因素变化,更改各种参数,将其输入到计算机中即可实时计算并反映出由此引起的变化。可视化仿真包括两项关键技术,一是将仿真分析中产生的结果转换为图形图像形式,即科学计算可视化(VisualizedSimulationScientificCalculation)。二是仿真交互界面可视化,即图形用户界面(GraphicsUser’sInterface,缩写GUI)。计算机仿真过程与计算结果分析对可视化仿真软件的理想功能要求如下:(1)用适当的图形表示方式显示数据场中各类物理量的分布,(2)对画面可进行缩放,使分析者可随时对感兴趣的部分进行仔细分析,(3)可交互在三维空间改变观察位置,并实时变化,(4)随时更改颜色与索引对应关系,并实时反映在物理量的图形表示上,(5)提供对三维场可按任意角度切片功能,把复杂的三维问题简化成一系列二维平面问题,(6)有画面叠加和画面的透明控制能力,消隐和多光源光照效应的能力,(7)实现动态显示,(8)实现驾驭式计算可视化,(9)系统可扩充性及实现友好的人机交互界面等。\n堤坝施工进度的可视化仿真研究2.2国内外相关研究进展随着计算机编程技术的不断发展和可视化仿真技术研究领域的不断深入.可视化仿真技术已被广泛的应用于水利水电工程当中,在国内外以天津大学尤为突出,主要包括以下几个方面Il叫:(1)复杂地下洞室群施工动态可视化仿真:地下厂房系统施工开挖量大,施工强度高,施工条件复杂,是一个极其复杂的过程。由于工序的作业时间的随机性,容易产生随机排队现象而影响其他作业;由于地下洞室系统纵横交错,布置密集,高差大,施工通道少,使得各工序配合与相互干扰错综复杂;在安排各个洞室施工先后顺序及隧洞施工顺序时,需要考虑对工程的总工期、围岩稳定、通风散烟条件、施工强度以及交通运输等问题的影响。各个洞室施工在时间、空间上的逻辑关系复杂,传统横道图难以直观地揭示其复杂的时空关系。因而仅靠设计人员采用传统的方法分析计算,难以确定合理的施工机械设备配套方案、制定合理的施工进度计划和施工组织设计方案,难以全面、快速、准确地掌握施工全过程。基于上述问题,提出了复杂地下厂房施工系统可视化仿真理论方法,并研制开发了相应的计算机软件。通过地下洞室群施工全过程动态仿真,可以对施工过程进行定量计算与分析,进行多方案的比较和优化,直到得出满意方案。(2)水利水电工程施工导截流三维动态可视化仿真:水利水电工程施工导流设计和管理过程,往往需要涉及大量的数据及图形信息,如坝区的水文、地形、地质资料以及枢纽设计、施工场地布置和施工导流方案设计等各种数据及图纸。高效、简便地对这些信息进行管理,是提高设计效率及施工管理水平的关键之一。同时,施工导流方案设计是施工组织设计的重要环节,其设计过程复杂,对不同的导流方案很难进行直观的比较,所以实现施工导流形象直观的表达具有重大的现实意义。为此,提出水利水电工程施工导截流三维动态可视化仿真理论与方法,并实现施工导截流可视化信息管理与三维动态演示系统。此系统充分利用地理信息系统GIs强大的空间数据分析与处理能力,建立三维施工导截流场地布置模型。以及在此基础上实现可视化的信息查询及管理等功能,从而实现设计过程中信息的可视化管理。同时实现施工导截流三维动态演示。(3)混凝土坝施工过程三维动态可视化仿真:混凝土坝施工,考虑到温度、应力、浇筑机械设备布置和浇筑能力等因素的影响,需将混凝土坝体按一定的原则进行分缝分块浇筑。由于混凝土坝浇筑量大,浇筑块数以千、万计,浇筑块之间的施工约束条件十分复杂,这就给安排浇筑顺序和进度带来极大\n大连理工大学硕士学位论文困难,使人工安排浇筑块、浇筑顺序几乎成为不可能。目前在制定混凝土坝施工组织计划时,传统的方法是凭经验用类比的方法按月升高若干浇筑层和混凝土浇筑强度等指标来控制施工计划的进程。这种方法由于缺乏系统的定量计算分析,在论证施工各阶段的筑坝进度以及各混凝土坝段升高过程是否能满足大坝施工各方面的要求时总感到论据不足。随着计算机和系统仿真技术的迅速发展,尤其是系统仿真技术在复杂系统运行中的推广应用,使得有可能在计算机上实现对混凝上坝施工的动态过程的仿真实验。事先拟定不同的混凝土坝施工方案,并对施工动态过程进行仿真,可预测不同旖工方案下混凝土施工进程的各项定量指标,这对制定合理的混凝土坝施工进度计划将提供科学可靠的决策依据。在充分考虑各种浇筑施工影响因素的情况下,建立混凝士坝施工系统的数学逻辑模型,并在此模型基础上编制计算机仿真软件。通过选取各种可能的机械配套方案及输入不同的施工技术参数进行大坝施工过程的仿真计算,可得到最优机械配套的数量、机械的利用率、混凝土月浇筑强度、逐月累计混凝土浇筑方量过程曲线。同时还可得到相应某施工方案下大坝浇筑施工的详细进度计划、各控制阶段的筑坝进程面貌等。而且通过混凝土坝浇筑仿真还可对其不同的浇筑规则对坝体上升进程的影响进行分析和研究。同时,利用三维动态演示系统来表现复杂混凝土坝施工过程。通过建立坐标系,把现实世界的事物在计算机中对应位置重现出来,建立实体的数字模型,并按照一定方式将实体与其属性一一对应,从而反映实体的静态空间特征。同时利用过程信息,生成三维动画,为描述复杂的施工过程提供可视化手段。(4)水利水电工程旌工总布置三维动态可视化仿真:水利水电工程施工总布置是对工程施工场地在施工期间进行的空间规划。由于水利水电工程施工场地布置几乎包括了一切地上、地下已有的、拟建的建筑物,~切为施工服务的临时性建筑物(包括砂石加工系统、混凝土系统等),因此布置过程非常复杂。对枢纽主要建筑物施工全过程进行分析,并在此基础上实现各建筑物施工关系之间的协调,以实现直观的施工总布置形象全过程三维动态仿真,使施工场地布置随工程进度计划尽可能形象、直观、迅速地演示现场施工场地变化过程。1.3已有研究特点总结从以上几个方面可以看出,目前水利工程施工可视化仿真领域的研究有如下特点:(1)现有的相关研究成果大都以GIS软件为开发平台研制,主要应用在大型水利水电工程上。\n堤坝施工进度的可视化仿真研究(2)采用的方法大都是将基于GIS的三维可视化技术运用于水利水电施工三维动态可视化仿真中。(3)施工系统各部分及其在施工进度计划中的相互关系可以通过图形来表达,并实现工程信息查询。同时我们也不难看出,上述成果研究中所提及的方法、平台均以GIS软件为平台进行二次开发。该软件费用昂贵,一般中小型水利工程由于资金短缺,较少应用,并且不可避免地造成如人机交互功能较差,仿真过程中系统运行的过程较隐蔽,要获得有效的仿真效果需要经过对大量的数字进行统计分析工作等弊端。因此,开发一个既经济,又适合中小型堤坝工程施工进度的可视化仿真软件尤为重要。1.4本文的研究目的、内容及意义本文属于计算机可视化在水利水电工程仿真中的应用研究领域,即将可视化技术引入堤坝施工进度仿真系统,该课题具有重要的理论意义与应用价值。水利水电工程施工是一个复杂的工程,受气候、施工工艺等诸多因素的制约与影响,要进行工期预测、多方案比较等是一个十分困难的过程,计算机仿真的应用为解决这些问题提供了有效的手段。但是,传统的数值仿真存在一些缺点,如人机交互功能较差,仿真过程中系统运行的过程较隐蔽,要获得有效的仿真效果需要对大量的数据进行统计分析工作等,需要有新的技术来解决这些问题。本文采用vc++与OpenGL相结合的可视化仿真技术开发堤坝施工进度可视化软件,,使工程技术人员对工程有一个形象直观的了解,有助于工程人员,特别是从事中小型堤坝施工的工程人员提出意见和建议,同时为决策者提供参考依据,并进一步指导施工组织设计的调整,具有重要的工程意义。本文的研究内容主要包括:第一章绪论:在阐述水利工程施工进度可视化研究背景的基础上,介绍目前可视化仿真技术在水利水电工程领域的研究现状及特点,同时阐述本文的主要研究内容。第二章堤坝施工进度可视化仿真系统的开发:简介系统的开发平台,系统的总体设计结构及实现的理论方法。第三章OpenGL图形变换:以计算机图形学为基础,实现OpenGL的图形变换。第四章三维真实感地形和堤坝的生成方法研究:针对地形的三维显示,研究了基于均匀网格模型的等高线三维地形造型方法,并将DEM数据转换成OpenGL原语,实现了地形的三维可视化。\n大连理工大学硕士学位论文第五章堤坝坡脚线和土方量的计算:建立了堤坝坡脚线的计算模型。将VC++融合OpenGL技术,实现了堤坝坡脚线的数值解法及图形可视化,给出了土方量的计算模型。第六章堤坝施工进度可视化仿真系统的功能实现:结合工程实例,详细介绍了该系统的主要功能包括:l、数据读取的功能:读取处理完毕的数据,并将数字数据转化为程序语言,存放在数组中;2、查询的功能:可查询如系统信息、工程信息等内容,还可以对土方量进行查询;3、基坑仿真的功能:对基坑进行二维和三维的网格、渲染图进行显示;4、坝体仿真的功能:对坝体分高程的显示施工进度面貌;显示施工过程中坝体的剖面图、横道图和条形图等。\n堤坝施工进度的可视化仿真研究2堤坝施工进度可视化仿真系统的开发2.1系统的开发平台本系统是以VC++为平台,基于OpenGL的程序设计的产物。vc++是美国微软公司推出的功能强大的程序设计平台,而VC++面向对象的编程技术就是要在Vc++平台下进行程序设计时把数据和处理数据的过程当成一个整体对象,应用这种编程技术的优点是开发时间短,效率高,可靠性高,所开发的程序更强壮,应用程序更易于维护、更新和升级。OpenGL(OpenGraphicsLibrary)是一个优秀的三维图形硬件的软件接口,一个三维图形和模型库。使用OpenGL可以绘制出真实感很强的三维图形。作为图形软件接口,OpenGL由几百个函数组成,用于访问和操作图形硬件所提供的各种功能。OpenGL本身不提供高级的造型命令,而是通过基本的几何图元一点、线、多边形来建立几何模型。用户则是通过这些基本图元来建立高级的几何模型。OpenGL提供的功能包括以下几个方面:(1)图形绘制:(2)交换操作;(3)颜色模式;(4)光照;(5)图像效果增强;(6)位图和图像;(7)纹理映射:(8)交互与动画。2.2系统的组成及开发步骤本系统由四个子系统组成,分别是数据输入子系统、信息查询子系统、基坑仿真子系统和坝体仿真子系统。系统的组成框图如图1.1所示,系统实现的步骤见图1.2。\n大连理工大学硕士学位论文I堤坝施工进度可视化系图2.i系统的组成Fig.2.1Segmentofthesystem图2.2系统的实现步骤Fig.2.2Approachoftherealizationofthesystem\n堤坝施工进度的可视化仿真研究2.3基于OpenGL的MFC应用程序框架的创建微软基础类库MFC为编写OpenGLWindows程序提供了良好的环境口】。在MFC中,类CView是所有视图类的基类。类CView和文档基类相关联,提供了实现文档数据的屏幕显示和交互操作的机制【8】。OpenGLMFC单文档应用程序框架的创建步骤如下:(1)建立一个MFC文档/视图结构的工程。I)从File菜单选择New命令,弹出New对话框。2)切换到Project选项卡,选择项目类型为MFCAppWizard(exe)。3)在Proigetlla/ne文本框中输入工程名称(如GL),单击OK按钮。4)选择单文档结构(SDI)。5)关闭所有的其他选项,如OLE、ODBC等。完成上述步骤后,将看到如下的窗口:选择Finish按钮。图2.3窗口Fig.2.3Thewindow\n大连理工大学硕士学位论文(2)在工程中加入OpenGL的连接库(openGL32.1ib、glu32.1ib、glaux.1ib)。图2.4窗口Fig.2.4Thewindow(3)设置像素格式建立一个工程,在View.h文件中添加头文件#include”gl\91.h”∥通知程序使用OpenGL函数#include”载gtu.1a”∥使用OpenGL使用霹薅数#include”gt\glaux.h”∥使用OpenGL辅勘库函数打开菜单Project\Settings,在弹出的对话框中选择Link标签,,在ObjectkLibraryModules栏中增加渤赫Il曩鲻2秘誊g翻”32zlib。gt馘txilib5《『三个函数库文件。在Cview类中添加两个公有成员CClientDC8m_pDC;CReetm_otdRect;j并在Cview的构造函数中初始化:CView::CStepinGIView(){|一mpDC州LL:)为CView添加函数bSetupPixelFormatO,设置像素格式。BOOLCView::bSetupPixelFornlatOfL//对结构PIXELFORMATDESCtLIPTOR初始化staticPIXELFORMATDESCRIPTOR删=\n堤坝施工进度的可视化仿真研究fsizeof(PIXELFORMATDESCPdPTOR),//结构长度1.//结构版本号PFD——DRAW——TO——WINDOWPFD-SUPPORT_OPENGL}PFDDOUBLEBUFFER,//处理像素PFDTYPERGBA./t颜色模式24.//颜色位数,24位真彩色0,0,0—00,0,,/颜色位数,一般不采用,置00,//RGBA颜色缓存中AIpha位数0.//交换位数,置00.N累积缓存的位数0,0,0—0//积累位数,置032,//深度缓存0。//模扳缓存0.,/辅助缓存位数,通常置0PFDMAINPLANE,N选择主层面0,0.0.0//存储及蒙版,必须为0j;/t设置像素格式intpixelformat:it((pixelformat=ChoosePixelFormat(mpDC->GetSafeHdcO,&pfd))2。o){MessageBox(”ChoosePixelFormatfailed“):returnFALSE:,】if(SetPixelFormat(m_pDC->GetSafeHdc(:),)pixelformat,『&pfd)一FALSE){MessageBox(”SetPixelFormatFailed”);returnFALSE;)returnTRUE;}为CView类添加函数Init()voidCVicw:jInit(){PIXELFORMATDESC陴TORpfd;10\n大连理工大学硕士学位论文intIn:HGLRChrc;m—_pDC=n洲eeli删Detthis);ASSEKT(m..:pDC净NULl;i羽bSempPixelFormat0)return;}到此为止,像素格式设置完成。创建着色描述表并使其当前化在前面的Init()函数后追加以下代码rl=:{G羽ixeiFo殉a炳翊零+城澈S媾H鬣④;::Dese曲e胀艘b卿蜘懑秘零}琴鳓蜘黝o∽8嘲鞫嗡,则Xbzc=蟾l@e_a_|鳓蛳e谴擘魁徊G》睽;{l|s疽蠡濑∞国;_。wgtMakeCurrent(m_:pI)e荔渤旆囔)蠲;≮一一i,H)删除着色描述表为CView类增加Windows消息WM_DESTROY,添加消息相应函数OnDestroy0voidCStepinGIView::onDemoY0|¨iL。二一_=0_HGLRC断;j。一h∞=::删IGetCurrentContext0;::wgl渐呔eel】重霉嘲时嘲澜l曩翰;i删::wglDe[aeConmxt(hrc);i坟m_pDC):一。。ideletem_pDC;CView:;。IID々s的蚋;)一至此已正确地建立了像素格式和着色描述表并对其管理,但是必须通过响应Windows消息WM_CREATE才能使OpenGL内核得到通知。编辑函数OnCreate()=intCView::0nCrea协∞,!;C螂枷S穰UCT蹲‰戬e鼬娴二‘if(CView::OnCjmateopCreateS扭毒uCt)一-t)淼辫≤i:一)他抛蛐一1¨;攀.returnjo;j.~ij¨|-ii≤攀≥ijj?jo』|O≯i”|Ij。一。。}。(5)设定GpenGL风格\n堤坝施工进度的可视化仿真研究OpenGL有自己的像索格式,只有OpenGL的客户区才能接受0penGL绘制,因此应有以下两个风格设置:BOOLCViewi:PreCreateWmdo删[CREATESTRUCT&es){cs.Style护ws:cL臻Gl豫∞R斟fWSCI_:I:网IBL潮GS;埠衄&eView::翟f《嗽娃eW洫酗吣罩;);(6)编辑Init()函数,在其中追加~下语句:GetCtientRect(;&m二oidRee0;∥获褥客户区寒小glClearDepth(1.;0D;,∥嫱除深度缓存glEnable(GLjEPm3Esr);矧寝渤深溲测斌gtMmtrixMode(GL_MODEL嘞;黼动撰型霉《羧.|glLoadldemi秘0;一∥指定一个当前雅阵。,辱x4添加消息WMSIZE。在CView中添加Windows消息WM_SIZE并生成消息相应函数OnSize(),在这个函数中为OpenGL建立视景体:voidCView:;OnSize一(UINT。nT。ype,int唠,intey)_{CView::OnSize(nType,ex,e妇;floatw=20:u|floath=100:glViewport(O,谚CX,9势;¨ji。i』¨glMatrixMode(GL_PROlEG瓢01峨Ⅳ瘤动透视变换{;glLoadldemityO;//建立视景体if(exc#cy)glOrtho(-w,W,-w*(GLfloat)eyt(GLfloat)cx,w4fGLfloat)ey/(GLfloat)ox,-h,埘;else=__ijlglOrthO(-w*(GLfloat)ex/(GLfloat)cy,w*(GLfloat)ex/(GLfloat)cy,-W,m—k÷÷h》;glMatfixModo(GL_MODELVIEW);}这里的glOrthoOi甬数用来创建正交的平行视景体,这是一个成直角的平行六面体,即通常意义下的盒子,见图2.5。由于正交投影的投射线垂直于投影面,且投射线之间相互平行,所以由正交投影确定的视景体两端的尺寸大小相同.因此据照相机的远近并不影响物体显示的大小。这种\n一奎塑三查兰堡主鲨壅投影模式通常应用在创建结构图或计算机辅助设计当中,因为在这些应用中,保持物体的确切尺寸和它们之间的准确角度是至关重要的。近剪裁面图2.5正交投影模式下的视景体Fig.2.5InspectUndertheUprightProjection在没有其他变换的情况下,投影的方向平行于z轴的方向,而视点则朝向z轴的负方向。至此,初始化OpenGL的工作已全部完成。\n堤坝施工进度的可视化仿真研究3OpenGL图形变换3.1从三维空间到二维平面311三维图形的显示流程在真实世界里,所有的物体都是三维的。但是,这些三维物体在计算机世界中却必须以二维平面物体的形式表现出来f9】。从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤(括号内表示的是相应的图形学概念)[10-12l:第一步,将相机置于三角架上。让它对准三维景物(视点变换,ViewingTransformation)。第二步,将三维物体放在适当的位置(模型变换,ModelingTransformation)。第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上(投影变换,ProjeetiOilTransformation)。第四步,决定二维像片的大小(视口变换,ViewportTransformation)。这样,一个三维空间里的物体就可以用相应的二维平面物体表示了,也就能在二维的电脑屏幕上正确显示了。计算机本身只能处理数字,图形在计算机内也是以数字的形式进行加工和处理的。为了使被显示韵物体数字化,要在被显示的物体所在的空间中定义一个坐标系。这个坐标系的长度单位和坐标轴的方向要适合对被显示物体的描述,这个坐标系称为世界坐标系。计算机对数字化的显示物体作了加工处理后,要在图形显示器上显示,这就要在图形显示器屏幕上定义一个二维直角坐标系,这个坐标系称为屏幕坐标系。这个坐标系坐标轴的方向通常取成平行于屏幕的边缘,坐标原点取在左下角,长度单位常取成一个象素的长度,大小可以是整型数。为了使显示的物体能以合适的位置、大小和方向显示出来,必须要通过投影。投影的方法有两种,即正射投影和透视投影。有时为了突出图形的一部分,只把图形的某一部分显示出来,这时可以定义一个三维视景体(ViewingVolume)。正射投影时一般是一个长方体的视景体,透视投影时一般是一个棱台似的视景体。只有视景体内的物体能被投影在显示平面上,其他部分则不能。在屏幕窗口内可以定义一个矩形,称为视口(Viewport),视景体投影后的图形就在视口内显示。\n大连理工大学硕士学位论文为了适应物理设备坐标和视口所在坐标的差别,还要作一适应物理坐标的变换。这个坐标系称为物理设备坐标系。根据上面所述,三维图形的显示流程应如图3.1所示。田曰日B卧圉图3.1三维图形的显示流程Fig.3.1Thedisplayprocessofthree-dimensionalgraph31.2OpenGL图形变换(1)视点变换。视点变换是在视点坐标系中进行的。视点坐标系于一般的物体所在的世界坐标系不同,它遵循左手法则,即左手大拇指指向z正轴,与之垂直的四个手指指向X正轴,四指弯曲90度的方向是Y正轴。而世界坐标系遵循右手法则的。如图3.2所示。当矩阵初始化glLoadldentity0后,调用glTranslmefO作视点变换。函数参数(x,Y,z)表示视点或相机在视点坐标系中移动的位置,这里z=.5.0,意思是将相机沿Z负轴移动5个单位。通常相机位置缺省值同场景中的物体一样,都在原点处,而且相机初始方向都指向Z负轴。这里相机移走后,仍然对准立方体。如果相机需要指向另一方向,则调用glRotatef()可以改变。图3.2视点坐标系和世界坐标系Fig.3.2Theeyecoordinateandtheworldcoordinate\n堤坝施工进度的可视化仿真研究(2)模型变换。模型变换是在世界坐标系中进行的。在这个坐标系中,可以对物体实施平移glTranslatef0、旋转glRotatef0和放大缩小glScalef0。例子里只对物体进行比例变换,glScalef(sx,sy,sz)的三个参数分别是x、Y、z轴向的比例变换因子。缺省时都为1.0,即物体没变化。程序中物体Y轴比例为2.o.其余都为1.o,就是说将立方体变成长方体。(3)投影变换。投影变换类似于选择相机的镜头。透视投影函数是glFrustumO,在调用它之前先要用glMatrixMode0说明当前矩阵方式是投影GLPROJECTION。这个投影函数一共有六个参数,由它们可以定义一个棱台似的视景体。即视景体内的部分可见,视景体外的部分不可见,这也就包含了三维裁剪变换。(4)视口变换。视口变换就是将视景体内投影的物体显示在二维的视口平面上。通常,都调用函数glViewport0来定义一个视口,这个过程类似于将照片放大或缩小。总而言之,一且所有必要的变换矩阵被指定后,场景中物体的每一个顶点都要按照被指定的变换矩阵序列逐一进行变换。每个顶点先要经过视点变换和模型变换,然后进行指定的投影,如果它位于视景体外,则被裁剪掉。最后,余下的已经变换过的顶点X、Y、z坐标值都用比例因子W除,即x/w、y/w、z/w,再映射到视口区域内,这样才能显示在屏幕上。3,2几何变换视点变换一般只有平移和旋转,没有比例变换。当视点进行平移或旋转时,视点坐标系中的物体就相当于在世界坐标系中作反方向的平移或旋转[14-151。3.2.1矩阵操作OpenGL提供了用来进行矩阵操作的函数voidglLoadMatrix{fd}(constTln)E+m1,以设置当前矩阵中的元素值。函数参数栅是~个指向16个元素(m0,ml,⋯,m15)的指针,这16个元素就是当前矩阵M中的元素,其排列方式如下:n10m番m8m12M={m1m5曲m13【m2m6rot0mi4】\n大连理工大学硕士学位论文|I蝤3rn7Ifl:H111l硒一r一~⋯一,试w⋯~。一一£‰。搿‰;口t}}。*n鼎嬲5㈣*懿w艄+、z“t;;*:☆j#n*群曩.⋯“、·、o}}{;_∞ji。用当前矩阵去乘tm所指定的矩阵。并将结果存放于+m中。当前矩阵可以是用glLoadMatrix()指定的矩阵,也可以是其它矩阵变换函数的综合结果。当几何变换时,调用openGL的三个变换函数glTranslate+()、glRotate+()和glScale+0,实质上相当于产生了一个近似的平移、旋转和比例矩阵,然后调用glMultMatrix0与当前矩阵相乘。但是直接调用这三个函数程序运行得快一些,因OpenGL自动能计算矩阵。3’2.2平移、旋转、缩放和反射平移变换函数如下;va撼:gl黪穗§攀i醭确魏穗峨,;篱鬻撵!瓤辫攘徽ij鬻萎。{鎏!曩j÷÷÷≯。≯垮i三个函数参数就是目标分别沿三个轴向平移的偏移量。这个函数表示用这三个偏移量生成的矩阵乘以当前矩阵。当参数是(o.0,0.O,0.O)时,表示对函数glTranslate+0的操作是单位矩阵,也就是对物体没有影响。平移示意如图3.3所示。ZX图3.3平移示意图Fig.3.3Sketchmapofthemovement旋转变换函数如下:voidglRotate{fd}(TYPEangle,TYPEx,TYPEy,.TYPEz)\n堤坝施工进度的可视化仿真研究函数中第一个参数是表示目标沿从点(X,y’z)到原点的方向逆时针旋转的角度,后三个参数是旋转的方向点坐标。这个函数表示用这四个参数生成的矩阵乘以当前矩阵。当角度参数是o.o时,表示对物体没有影响。旋转示意如图3.4所示。yZ图3.4旋转示意图Fig.3.4SketchmapoftherotationX缩放和反射变换函数如下:voidglScale{fd}(TYPEx,TYPEy,TYPEz)三个函数参数值就是目标分别沿三个轴向缩放的比例因子。这个函数表示用这三个比例因子生成的矩阵乘以当前矩阵。这个函数能完成沿相应的轴对目标进行拉伸、压缩和反射三项功能。当参数是(1.0,1.0,1.0)时,表示对函数glScalet0操作是单位矩阵,也就是对物体没有影响。当其中某个参数为负值时,表示将对目标进行相应轴的反射变换,且这个参数不为1.0,则还要进行相应轴的缩放变换。最好不要令三个参数值都为零,18\n大连理工大学硕士学位论文这将导致目标沿三轴都缩为零。缩放和反射示意如图3.5所示。y图3.5缩放和反射Fig.3.5Sketchmapoftherotation\n堤坝施工进度的可视化仿真研究4三维真实感地形和堤坝的生成方法研究4.1地形可视化与数字地面模型地形可视化问题最初是根据地理信息系统的三维可视化需求提出的【19]。随着地理信息系统和计算机可视化技术的发展,地形可视化逐渐发展成了一个专门以研究基于数字地面模型或数字高程模型的生成、简化和仿真为主要内容的计算机可视化应用技术。地形可视化的应用领域早已不局限于地理信息系统,如今在虚拟现实、视景仿真、虚拟地理环境、战场环境仿真、电子娱乐游戏、气象数据预报等领域中都可以找到大量地形可视化技术的应用实例。所谓数字地面模型(DTM,DigitalTerrainModel),是指真实地面地形起伏状态的一种数字化表达方式,通常由对地形表面进行某种形式取样而得到的一组三维空间点的X、Y、Z坐标数据集合和一套能够对地面进行某种连续性描述的算法组成。数字地面模型一方面描述了包括地面地形的高程、坡度、坡向、坡度变化等各种地貌因子在内的线性和非线性的空间分布,另一方面还以矩阵的形式表述的数字方式描述了包括自然地理要素以及与地面有关的社会、经济、人文要素(如土壤类型、土地利用类型、岩层深度、地区分布等)在内的各种非地貌特征信息。简单的说,数字地面模型是按照一定结构组织在一起的数据集合,代表着地面地形特征的空间分布,是建立地形可视化数据库的基本数据,可以用来制作等高线图、坡度图、专题图等多种图解产品【2”。创建数字地面模型的过程大体分为两个步骤:第一步是按一定的测量方法,在测区内测量一定数量离散点的平面位置和高程,这些点称为控制点(数据点或参考点);第二步,以控制点为网络框架,在其中内插大量的高程点,当然,内插是由计算机根据一定的计算公式并依照某种规则图形(如方格网)求解的。控制点和内插点的平面位置和高程数据的总和,即该测区的数字地面模型。4.2三维地形与等高线地丹参图地形是自然界复杂的景物,三维地形是模拟自然环境中不可缺少的重要组成部分,因此三维真实感地形的绘制一直是国内外计算机图形学领域关注的热点。自然地形主要有两方面的特性:地形的宏观形状和地貌特征。地形造型,即选用合适的地形造型方法控制地形轮廓。地貌特征模拟,即采用有效的技术(如图像处理方法或几何纹理生成法),呈现丰富的地貌特征。\n大连理工大学硕士学位论文等高线地形图是用二维平面来表示三维地形的重要工具,也是地图学中最常用的地理要素[22J。但是,等高线地形图不够直观,读懂等高线地形图也需要一定的地理专业知识。近年来,对等高线地形图进行三维地形建模与可视化的研究成为地图学和地理信息系统的研究热点,其目的就是使地形、地貌特征表现得就像彩色照片一样直观易懂。本文以数字地面模型生成的等高线图(CAD文件)为基础数据,进行数据的获取及建模,并在面向对象软件Visualc++平台下利用OpenGL实现了三维地形的可视化。本方法不需要其他商业软件的支持,具有较强的实用性与经济性。图4.1等高线图Fig.4.1Thegraphofcontour4.3基于均匀网格模型的等高线的三维地形造型方法三维地形数据的生成包括以下几个步骤:高程点的采集;数据的矢量化;DEM数据转换成OpenGL原语。4.3.1利用地形图采集离程点数据在实际应用中,地形图一般是二维平面图,而且除等高线外其余大部分空间的高度未知。当前基于等高线的造型方法大都将等高线投影于给定网格,然后根据相邻等高线高程值插值计算出网格点处的高程。因此地形平面网格的剖分方式和等高线间的地貌信息填充,是基于等高线的三维造型的关键技术。当前基于等高线的剖分方式主要有三种:\n堤坝施工进度的可视化仿真研究均匀网格模型、非均匀网格模型、三角网格模型J231。本文所采用的是基于等高线的均匀网格模型。均匀网格模型是三维地形模拟中一种最常用的模型,如图4.2,4.3所示。图4.2均匀网格模型俯视图Fig.4.2Theplanform图4.3均匀网格模型侧视图Fig.4.3Thesideelevation均匀网格的数据由一系列等间隔的等高线高程值表示,代表一块方形网格地形,网格交叉点的高程值由相邻等高线的高程值插值得到,本文所采用的插值方法是径向基函数插值法(Multiquadrie方法)Ⅲ1。Multiquadric方法是由R.L.Handy在1971年提出来的,是应用得最成功的一种径向基函数插值方法【26】。它采用的插值函数为:F(x,y)=6ⅡJ[(x—x.)2一(y—y。)2+△2】‘坨.i=1,2,...,n(4.1)』一l式中,△表示任意常数,大量计算表明,如果相对于数据点之间的距离,△取值过大,则会导致病态矩阵,影响求解。在大多数情况下,△取值应小一些。如果将n个点(x。,y。)代A至IJ(4.1)中,即可得到一组联立方程(2)f,,求解此方程组联立方程,即可求出系数n,(j=1,2⋯.,n)的值。F(x,y)=6QJ[(x,-xJ)2一(Y,一Y,)2十△2】”2.i=l,2⋯.,n(4.2)J=】公式中x表示横坐标,y表示纵坐标,a为函数系数,△为任意常数。\n大连理工大学硕士学位论文如果令Q,表示任意二次基函数,a,表示系数,f,表示给定点(x,,Yi)的值,则可将(4.2)改写为:nF(x,y)26ⅡJQ“.i2l,2,...,n(4.3)』=l其矩阵形式为:n,;Q:1F.其解为:F,5Q“’a,其中,F为函数的值,Q。为对应的齐次矩阵的第i行,第j列的元素。4.3.2数据的存储和读取本文将周边地形及坝体的三维点的坐标以分块的方式保存在文档文件中并在程序中直接从数据文件中读取数据。围4.4数据的读取F遮.4.4Datareading在处理大型的数据库时,适宜使用0DBC读取数据,它不必把文档全部转入内存中就可以对数据进行处理,但是这同时也就限制了程序必须与数据库同时存在于一个计算机上才能运行,如果程序移到其他的计算机上运行,就需要重新建立数据源。对于一些处理数据库的程序,有时需要在不同的计算机上运行,如果数据库的规模不太大的话,\n堤坝施工进度的可视化仿真研究就可以使用直接从文本文件中读取数据的方式。这种方法虽然存储数据格式较单一,需要事先定义好数据格式,但是它操作简单,并且数据移动方便,可以使程序方便地在不圊的计算机上使用。本文中的数据量较小,且数据库结构并不复杂,故使用直接从数据文件中读取数据的方法读取数据。在二维的有限元网格结构中,首先要说明每个单元与各个节点之间的关系,其次要说明各个节点的坐标值,有了这两点就可以画出有限元网格,最后说明每个节点的物理值,就可以将其处理成等值线和云图等表现形式。在三维的有限元网格中也是相同的道理。下面以三维有限元网格结构为例说明在文本文件data.uct中规定数据结构和从中读取数据的过程,其中有限元划分的单元为立方体,共6个面,8个顶点。在文本文件data_txt中的数据结构如下:①有限元网格中顶点的总个数nodeN②从l到nodeN,顶点的标号、x坐标、Y坐标、z坐标、顶点物理值;③有限元网格中单元的总个数elementN;④从1到elementN,单元标号、单元顶点l、单元顶点2⋯⋯。在类View中为菜单Import添加响应函数Import()并编辑如下jj囊爹爹鏊ji叠≯_。■⋯一⋯_一ijj鬟.{;1__蔓、。蔓篓量曩曩j蔓_一。拦i薹蔓jj量ii;;_l一。“强i溪鬟誊曼毳亳曩≯一?薯。.。。繁i藿羹誉蓑鎏i誊ii豢瀵漆熟i攀jiii;豢蒸豢i鬻-一}-}篆≥i.。j?j鏊雾鎏;囊。+。曩j。毫j澎,i“i\n大连理工大学硕士学位论文蠛爨纛囊哆漆熬纛攀;,。豢懑;i|『l=鬻誊嚣囊鬻攀誉鬻繁蒸黪I嚣+鬻≤鬻爹i一誉笺薯嚣i’薯爹i譬麓蒸黪基童曩鬟薯!薯I;一≯ii≥建兰_■善≥誊≯薯蔓i攀。■l:≮*一一、j蓦薹。■董薯jii攀攀攀萋攀}iii;_i每j誊:|lji季i≤?;≥j{{{:。}薯翟;薯蠹攀量薹,篓_.篓薯I鼻j4.3.3数据的矢量化三维地形模型的基本构造通常是以三角面为单元的。三角面的明亮程度除取决于光源和明暗处理方式外,还受到点与面的法向量的影响啪】。一般点的法向量取值为其周围面法向量的均值。在图3中P点的法向量即可表示为与其相邻的四个面法向量N1、N2、N3、N4的和的平均值[29-30]。I、1r,/m2N4、、—————一N1图4.5P点矢量化示意图Fig。4.5Thecalculationofvector本文中法向量的计算源代码如下:4.3.4DFM数据转换成OpenGL原语OpenGL不仅提供了点、线、多边形建模原语,而且通过这些原语还可以把地形模型表示成点型原语序列、线型原语序列以及多边形原语序列。本文把DEM规则格网转换成三角面串序列的程序如下:glp囊攀纂蒸瓣鬟麟黪羹鞠熬i薰鬻蔓i豢i镶:j蘩萼蕊誊”≥童;ij。o『一薯j:奠譬。≥冀_一。嚣舞_⋯¨。.誊-._\n堤坝施工进度的可视化仿真研究执行程序运行的结果如图3.6,3.7所示:图4.6地形网格平面团Fig.4.6Thegridoftwo-dimensionalterrain\n大连理工大学硕士学位论文图4.7三维地形网格图Fig.4.7Thegridofthrce-dimensionalterrain4.3.5光照真实感图形绘制是计算机图形学的一个重要组成部分,它综合利用数学、物理学、计算机科学和其它科学知识在计算机图形设备上生成象彩色照片那样的具有真实感的图形。一般说来,用计算机在图形设备上生成真实感图形必须完成以下四个步骤:一是用建模,即用一定的数学方法建立所需三维场景的几何描述,场景的几何描述直接影响图形的复杂性和图形绘制的计算耗费;二是将三维几何模型经过一定变换转为二维平面透视投影图;三是确定场景中所有可见面,运用隐藏面消隐算法将视域外或被遮挡住的不可见面消去;四是计算场景中可见面的颜色,即根据基于光学物理的光照模型计算可见面投射到观察者眼中的光亮度大小和颜色分量,并将它转换成适合图形设备的颜色值,从而确定投影画面上每一象素的颜色,最终生成图形。由于真实感图形是通过景物表面的颜色和明暗色调来表现景物的几何形状、空间位置以及表面材料的,而一个物体表面所呈现的颜色是由表面向视线方向辐射的光能决定的。在计算机图形学中,常采用一个既能表示光能大小又能表示其颜色组成的物理量即光亮度(1uminance)或光强(intensityoflight)来描述物体表面朝某方向辐射光能的颜色。采用这个物理量可以正确描述光在物体表面的反射、透射和吸收现象,因而可以正确计算出物体表面在空间给定方向上的光能颜色。物体表面向空间给定方向辐射的光强可应用光照模型进行计算。简单的光照模型通常假定物体表面是光滑的且由理想材料构成,因此只考虑光源照射在物体表面产生的反\n堤坝施工进度的可视化仿真研究射光,所生成的图形可以模拟处不透明物体表面的明暗过渡,具有一定的真实感效果。复杂的光照模型除了考虑上述因素外,还要考虑周围环境的光对物体表面的影响。如光亮平滑的物体表面会将环境中其它物体映像在表面上,而通过透明物体也可看到其后的环境景象。这类光照模型称为整体光照模型,它能模拟出镜面映像、透明等较精致的光照效果。为了更真实的绘制图形,还要考虑物体表面的细节纹理,这通常使用一种称为“纹理映射”(texturemapping)的技术把已有的平面花纹图案映射到物体表面上,并在应用光照模型时将这些花纹的颜色考虑进去,物体表面细节的模拟使绘制的图形更接近自然景物。4.3.5.1光照模型当光照射到一个物体表面上时,会出现三种情形。首先,光可以通过物体表面向空间反射.产生反射光。其次,对于透明体,光可以穿透该物体并从另一端射出,产生透射光。最后,部分光将被物体表面吸收而转换成热。在上述三部分光中,仅仅是透射光和反射光能够进入人眼产生视觉效果。简单光照模型只考虑被照明物体表面的反射光影响,假定物体表面光滑不透明且由理想材料构成,环境假设为由白光照明。一般来说,反射光可以分成三个分量,即环境反射、漫反射和镜面反射。环境反射分量假定入射光均匀地从周围环境入射至景物表面并等量地向各个方向反射出去,通常物体表面还会受到从周围环境来的反射光(如来自地面、天空、墙壁等的反射光)的照射,这些光常统称为环境光(AmbientLight):漫反射分量表示特定光源在景物表面的反射光中那些向空间各方向均匀反射出去的光,这些光常称为漫射光(DiffuseLight):镜面反射光为朝一定方向的反射光,如~个点光源照射一个金属球时会在球面上形成~块特别亮的区域,呈现所谓“高光(Highlight)”,它是光源在金属球面上产生的镜面反射光(SpecularLight)。对于较光滑物体,其镜面反射光的高光区域小而亮;相反,粗糙表砸的镜面反射光呈发散状态,其高光区域大而不亮。在OpenGL简单光照模型中的几种光分为:辐射光(EmittedLight)、环境光(AmbientLight)、漫射光(DiffuseLight)、镜面光(SpecularLight)。辐射光是最简单的一种光,它直接从物体发出并且不受任何光源影响。环境光是由光源发出经环境多次散射而无法确定其方向的光,即似乎来自所有方向。一般说来,房间里的环境光成分要多些,户外的相反要少得多,因为大部分光按相同方向照射,而且在户外很少有其他物体反射的光。当环境光照到盐面上时,它在各个方向上均等地发散(类似于无影灯光)。\n大连理工大学硕士学位论文漫射光来自一个方向,它垂直于物体时比倾斜时更明亮。一旦它照射到物体上,则在各个方向上均匀地发散出去。于是,无论视点在哪里它都一样亮。来自特定位置和特定方向的任何光,都可能有散射成分。镜面光来自特定方向并沿另一方向反射出去,~个平行激光束在高质量的镜面上产生100%的镜面反射。光亮的金属和塑料具有很高非反射成分,而象粉笔和地毯等几乎没有反射成分。因此,从某种意义上讲,物体的反射程度等同于其上的光强(或光亮度)。4.3.5.2创建光源光源有许多特性,如颜色、位置、方向等。选择不同的特性值,则对应的光源作用在物体上的效果也不一样。OpcnGL中提供了创建光源的函数glLight*0:voidglLight(if}【v】(GLenumlight,GLenumpname,TYPEparam)。其中第一个参数light指定所创建的光源号,如GLLIGHTO、GLLIGHTl、..、GLLIGHT7。第二个参数pname指定光源特性,这个参数的辅助信息见下表4.1所示。最后一个参数设置相应的光源特性值。表4.1光源参数表Tab.4.IParameterofLightrecoursepname参数名缺省值说明GLAMBIENT(O.O,O.0,0.0,1.O)RGBA模式下环境光GLDIFFUSE(1.0,1.0,1.0,1.0)RGBA模式下漫反射光GL_SPECULAR(1.0,1.0,1.0,1.0)RGBA模式下镜面光GLPOS:ITION(0.0,0.0,1.0,0.0)光源位置齐次坐标(x,y,z,w)GL-SPOT—DIRECTION(0.0,0.0,-1.0)点光源聚光方向矢量(x,Y,z)GL_SPOT—EXPONENT0.0点光源聚光指数GL-SPOT—CUTOFF180.O点光源聚光截止角GL-CONSTANT_ATTENUATION1.0常数衰减因子GL_LINER_ATTENUATIONO.0线性衰减因子GL_QUADRATIC竖TENUATIONO.0平方衰减因予\n堤坝施工进度的可视化仿真研究光源的创建为:GLfloatlightposition[1_{1.0,1.0,10,0,0);glLightfv(GLLIGHT0,GUOSITION,lightposition)其中light_position是一个指针,指向定义的光源位置齐次坐标数组。其它几个光源特性都为缺省值。同样,我们也可用类似的方式定义光源的其他几个特性值,例如:GLfloatlight_ambient【】。{0.0,0.0,O.0,1.0j;GLfloatlightdiffuse【】{=:{1.0,1.0,1.0,1.0};GI_,floatlight_specular[卜{1.0,1.O,1.0,1.0};glLightfv(GL.上IGHTO,GL_AMBLENT,lighta:mbiem);glLightfv(GLLIGttT0,GL_DIFFUSE,light_diffuse);glLighffv(GL--LIGHTO,GLSPECUI。AR,nght_specular);4.3.6材质4.3.6.1材质的颜色OpenGL用材料对光的红、绿、蓝三原色的反射率来近似定义材料的颜色。象光源一样,材料颜色也分成环境、漫反射和镜面反射成分,它们决定了材料对环境光、漫反射光和镜面反射光的反射程度。在进行光照计算时,材料对环境光的反射率与每个进入光源的环境光结合,对漫反射光的反射率与每个进入光源的漫反射光结合,对镜面光的反射率与每个进入光源的镜面反射光结合。对环境光与漫反射光的反射程度决定了材料的颜色,并且它们很相似。对镜面反射光的反射率通常是白色或灰色(即对镜面反射光中红、绿、蓝的反射率相同)。镜面反射高光最亮的地方将变成具有光源镜面光强度的颜色。例如一个光亮的红色塑料球,球的大部分表现为红色,光亮的高光将是白色的。4.3.6.2材质的定义材质的定义与光源的定义类似。其函数为:voidglMaterial{if}Iv](GLenumface,GLenumpname,TYPEparaln)1定义光照计算中用到的当前材质。face可以是GL—FRONT、GL-BACK、GL_FRONT』NDBACK,它表明当前材质应该应用至q物体的哪一个面上:pname说明一个特定的材质;param是材质的具体数值,若函数为向量30\n大连理工大学硕士学位论文形式,则param是一组值的指针,反之为参数值本身。非向量形式仅用于设置GLSHINESS。另外,参数GL_AMBIENT_AND_DIFFUSE表示可以用相同的RGB值设置环境光颜色和漫反射光颜色。材质参数如表4.2所示。表4,2材质参数表Tab.4,2ParameterofMateria】【参数名缺省值说明GL_AMBIENT(0.2,0.2,0.2,1.O)材料的环境光颜色lGL_DIFFUSE(O.8,0.8,0.8,1.0)材料的漫反射光颜色GLAMBIENT_AND_DIFFUSE材料的环境光和漫反射光颜色GL_SPECULAR(0.0,0.0,0.0,1.0)材料的镜面反射光颜色GL_SHINESS0.0镜面指数(光亮度)GL_EMISSION(O.O,0.0,0.0,1.o)材料的辐射光颜色GL_COLOR_INDEXES(0,1,1)材料的环境光、漫反射光和镜面光颜色设置材质的执行程序的源代码如下:voidCTerrain3DTestView::OnEditCaizhi(){//TODO:AddyoIlrcommandhandlercodehereCLightMatroaldlg;dlg:m_colorBtue=mcolorBlue;dlg.m_colorGreen=m_cotorGreen,.镬g.m—colorRed=m—colorRed;dlg:m_maskBlue=m',..bMaskBlue;dlg.m_maskGreen--rn_bMaskGreen:dlg.m_maskRed=m_2bMaskRed;dlg:m_matAmbientR--m_materialAmb[0];一alg.m_matArn?bientG=m。_materi。=a、lAmb[t醅dlg.m_matAJnbientB=m_materialAmb[2];dlg:m_matDiffus出5m_materialDif[0】\n————————————————羔望堕!j;望堕塑里坠堕塞翌壅dig.m_matDiffuseG=m_materialDif[1】;dlg.mmatDiffuseB---m_materialDif[2];dig.m_matEmissionR=m_materialEmi[0];dlg.m~matEmissionG弛materialEmi[1]:dig.mmatEmissionB=mmaterialEmi[2];dlg.m_matSpecularR2m_materialSpe[0];dlg.m_matSpecularG=m_materialSpe[1卫dlg.m_matSpecularB--m_materialSpe[2];dlg.m_bMatefialOnOff=m__bMaterial.dlg.m_matShininess--m_matshininess:intresponeDIg=d培DoModalO;if(responeDIg—IDOK){m_colorRed=dlg.m_colorRed;m_colorGre印司lg.mcolorGreen:m_colorBlue=dig.m_colorBlue;m_bMaskRed=dlg.m—maskRed:,m_bMaskGreen=dlg.m-_maskGreen;m_bMaskBlue=dlg.rnmaskBlue:mmaterialAmb[0]=dlg.m_matAmbiemR;m_materialAmb[1]=dig.m_malAmbientG;m_materialAmb[2]=dlg.m_matAmbientB;m_materialDif[0]=dlg.m_matDiffuseR;m_materialDif[1]=dlg.msaatDiffuseGm_materialDi职】础g.m_matDiffuseB;m_materialEmi[0]=dig.m_matEmissionR;m_materialEmi[1]=dlg.m_mmEmissionG;m_materialEmif2j=dlg.mmatEmissionB;m_materialSpe[0]。dlg.m_matSpecularR:32—\n大连理工大学硕士学位论文m_materialSpe[1]=dig。m_matSpecularG;re_materialSpe[2l=dlg.m_matSpecularB;m_bMaterial=dlg.m_bMaterialOnOff;rn_matshininess=dlg.m__matShininess;Invalidate();)}本文中以对话框的方式进行材质编辑,如图4.7:图4.7材质的编辑Fig.4.7Theeditofmaterial43.7纹理映射纹理映射是建立逗真三维地形景观的重要手段,在三维图形中,纹理映射(TextureMapping)的方法运用得很广,尤其描述具有真实感的物体。比如绘制一面砖墙,就可以用一幅真实的砖墙图像或照片作为纹理贴到一个矩形上,这样,一面逼真的砖墙就画好了。如果不用纹理映射的方法,则墙上的每一块砖都必须作为一个独立的多边形来画。另外,纹理映射能够保证在变换多边形时,多边形上的纹理图案也随之变化。例如,以透视投影方式观察墙面时,离视点远的砖块的尺寸就会缩小,而离视点较近的就会大些。此外,纹理映射也常常运用在其他一些领域,如飞行仿真中常把一大片植被的图像映射到一些大多边形上用以表示地面,或用大理石、木材、布匹等自然物质的图像作为\n堤坝施工进度的可视化仿真研究纹理映射到多边形上表示相应的物体。纹理映射有许多种情况。例如,任意一块纹理可以映射到平面或曲面上,且对光亮的物体进行纹理映射,其表面可以映射出周围环境的景象;纹理还可按不同的方式映射到曲面上,一是可以直接画上去(或称移画印花法),二是可以调整曲面颜色或把纹理颜色与曲面颜色混合;纹理不仅可以是二维的,也可以是一维或其它维的。纹理映射的基本步骤如下:1)定义纹理、2)控制滤波、3)说明映射方式、4)绘制场景,给出顶点的纹理坐标和几何坐标。4.3.7.I二维纹理的定义定义一个二维纹理映射的函数是:voidglTexlmage2D(GLenumtarget,GLintlevel,GLintcomponents,GLsizeiwidth,glsizeiheight,GLintborder,OLenumformat.GLenumtype,coP.stGLvoid+pixels)。其中参数target是常数GL-_TEXTURE_2D。参数level表示多级分辨率的纹理图像的级数,若只有一种分辨率,则level设为0。参数components是一个从1到4的整数,指出选择了R、G、B、A中的哪些分量用于调整和混合,l表示选择了R分量,2表示选择了R和A两个分量,3表示选择了R、G、B三个分量,4表示选择了R、G、B、A四个分量。参数width和height给出了纹理图像的长度和宽度,参数border为纹理边界宽度,它通常为0,width和height必须是2m+2b,这里m是整数,长和宽可以有不同的值,b是border的值。纹理映射的最大尺寸依赖于OpenGL,但它至少必须是使用64x64(若带边界为66x66),若width和height设置为0,则纹理映射有效地关闭。参数format和type描述了纹理映射的格式和数据类型,它们在这里的意义与在函数glDrawPixelsoqb的意义相同,事实上,纹理数据与glDrawPixels0所用的数据有同样的格式。参数format可以是GLCOLORINDEX、GLRGB、GLRGBA、GLRED、GLGREEN、GLBLUE、GLALPHA、GLI^玲,珏NANCE或GLLUMINANcEALPHA4.3.7.2纹理的控制OpenGL中的纹理控制函数是:voidglTexParameter(if}[v](GLenumtarget,GLenumpname,TYPEparam)。控制纹素映射到片元(fragrnent)时怎样对待纹理。第一个参数target可以是GLTEXTURE1D或GL_TEXTURE__2D,它指出是为一维或二维纹理说明参数;后两个参数的可能值见表4-3所示。\n大连理工大学硕士学位论文表4.3滤波参数表Tab.4.3ParameterofRejection参数值GL_TEXTUREWRAPSGL-鼻LAMPGLREPEATGL__TEXTUREWRAP—TGLCLAMPGLI也PEATGL.』EXTUREMAG_FILTERGL._NEARESTGLLINEARGL_TEXTUREMIN_FILTERGLNEARESTGLLD咂ARGLNEARESTMIPhIAPNEARESTGLNEARESTMH’MAPLINEARGLLⅡ呵EARMn’NlAPNEARESTGLLINEARMIPMAPLINEAR4.3.7.3纹理坐标在绘制纹理映射场景时,不仅要给每个顶点定义几何坐标,而且也要定义纹理坐标。经过多种变换后,几何坐标决定顶点在屏幕上绘制的位置,而纹理坐标决定纹理图像中的哪一个纹素赋予该顶点。并且顶点之间的纹理坐标插值与平滑着色插值方法相同【2】。纹理图像是方形数组,纹理坐标通常可定义成一、二、三或四维形式,称为s,t,r和q坐标,以区别于物体坐标(x,Y,z,w)和其他坐标。一维纹理常用s坐标表示,二维纹理常用(s,t)坐标表示,目前忽略r坐标,q坐标象W一样,一半值为l,主要用于建立齐次坐标。OpenGL坐标定义的函数是:voidgltexCoord{1234}{sifd}[v](TYPEcoords);设置当前纹理坐标,此后调用glVenext0所产生的顶点都赋予当前的纹理坐标。对于gltexCoordl+(),s坐标被设置成给定值,t和r设置为0,q设置为l:用gltexCoord2*()可以设置s和t坐标值,r设置为0,q设置为1;对于gltexCoord3*0,q设置为1,其它坐标按给定值设置;用gltexCoord4*0可以给定所有的坐标。使用适当的后缀(s,i,f或d)和TYPE的相应值(GLshort、GLint、glfloat或GLdouble)来说明坐标的类型。注意:整型纹理坐标可以直接应用,而不是象普通坐标那样被映射到【_l,1]之间。\n堡堡堕三垄塞堕里塑垡望壅堑壅图4.9三维地形渲染翻Fig.4.9Therolmanclgofthree·dimensionalterrain按上述方法,将图4.7所示的三维地形网格图进行纹理映射获得的三维渲染图如图4.9所示。其程序核心代码如下:g]PixelStorei(GL_UNPACK_ALtGNMENT,1);,√定义纹理glTexImage2D(GL_TEXTURE,2D,0、3,width,height,0,GL_BGR_EXT,GL_UNSIGNEDBYTE,pTextureBits);,控制纹理gH。‘exParameterf(GL_TEXTURE__2D,GLTEXq、URE_WRAPZS;GLCLAMP);glTexParameterf(GL_TEX叫=2D,GLTEX]、URE—WRAP_丁,GLCLAMP);glTexParameterf(GL_TEXTURE_2D,GLTEX'11URE__MAG_FILTER,GLNEAREST)glTexParameterf(GL_TEXTURE_2D,GLTEXTURE_MIN=HLTER,GL_NEAREST);//说明纹理贴图glTexEnvf(GL_TEXTURE_ENV,GLTEXT{IRE_ENV型ODE,GL_MODULA‘rE)//启动纹理贴图\n大连理工大学硕士学位论文glEnable(GLTEXTURE_2D);glShadeModei(GL_SMOOTH);,,定义纹理坐标和物体几何坐标glBegin(GkQUADS);glTCxCOord2f(:010f,o,00;givenex3f(-2.0,-2.o,o.o);gtTexC00fl:12坟o.o鼍l:o_f》;g!Vertex3f(-2.o,2.oio:o);glTenCoord2=f(1.of,i.0f);glV眦x3f@0,2.0,0.{0kg!TexC00rd2f(1.O鞠.O甥,g/ve[tex3f【2.0,-2.O,0.峨glEnd(k//纹理坐搽的自动生戚glTexGeni(GL—S;GL髓XTURE—GEN—MODE;OL__.SP臼嚣REMAP);glTexGcni(GLJ,OL二TEXTUREGEN.MODE,OLSrrmREMAP);glTexGenfv(GL._S..GL—OBJECT—PL烈E,eurrentC6eff);=。glTexGe峨(GkTiGI_,I◇B癌e互蓼既AN珐cu垂粥11t_eoe固;//启动敛娌贴图glEnable(GL,TEXTU暖GENS);glEnab!e(GLTEXTUREGENT};glEnaUe(GL2TEX删,2D);gIEnable(GL_CULL_FACE);glEnable(GLAUTO_N0眦);g!Enable(GLNO触!ZEkglFromFaee(GL_CW叼≯glCullFaCe(GL二BACK);\n堤坝施工进度的可视化仿真研究5堤坝坡脚线和土方量的计算5.1堤坝坡脚线的计算5.1.1建立堤坝坡脚线的数学模型地形填挖是工程施工过程中不可缺少的环节。而在堤坝施工中,基坑开挖线(即坡脚线)的确定则是一个重要问题。传统的求解坡脚线的方法是采用标高投影图解法求解,图解法作图速度慢、精度低,不适合计算机编程的实现。本文采用文献【29】的方法求解坡脚线。该方法采用数值计算融合Vc十+编程技术,实现堤坝坡脚线的数值解法和图形的自动生成并可视化。坝坡面与地面相交可看成是斜坡面与曲面相交的过程,其中坝坡面可用(5.1)模型表达:AX+BY+CZ+D=0(5.1)式中z是坝高程变量。将上式用一组等高线表示,则其中第i条等高线方程表示为AX,+占r+D=0(5.2)地面(曲面)一般由实际测绘获得,等高线描述了近似的地形曲面,因此,曲面方程可以看作是一组等高线的非线性组合,在形成等高线时,统常采用抛物线、B样条曲线及张力样条曲线等拟合,其中抛物线具有数字模型简单,拟和精度高的特点,因此,采用抛物线拟合方法,用抛物线逐段拟合不同高程下的曲线方程是:f(x,,Y,)=C(5.3)式(5.2)和式(5.3)联立求解,即得坡脚线上的点。本模型采用测量坐标系,使原地形图的坐标系进行平移和旋转,让Y轴与坝轴线平行(见图5-i)。此时,坝坡面上的等高线方程为:工=xo(5.4)求解的等高线方程按抛物线方式插值,现在等高线上取三点:1(而,Y1)、2(x:,Y:)、3(屯,Y,),则过三点的抛物线方程是。Y=口+缸+CX2(5.5)口、b、C是未知参数因为1、2、3点在抛物线上,坐标满足方程,将三点坐标代入(5.5)式得Y】=d+hl+“11Y2=口+k2+“22(5.6)(5.7)\n大连理工大学硕士学位论文Y3=a+缸3+既32(5.8)为求解口、b、c,将(5.6)、(5.7)、(5.8)联立求解,得。:圣二堡码一xlb=巧2一(zl+z2)c=疋3一(x2+屯)C口2Y1一bxl一蕊12=Y2一bx2一蹦22=Y3一bx3一“32(5.9)(5.10)(5.11)式中:Z,:2生边。一_y,-y2“x:--X1’123一ii将参数日、b、c代入式(5.5),就得到具体形式的抛物线方程。将式(5‘4)与式(5.5)联立求解,即可求出地形等高线与坝坡面上同高程等高线的交点。地面等高线■图5-1数学模型示意图Fi95—1pictureofmathematicsmodel51.2堤坝坡脚线的求解及程序设计按上节数值计算方法求解坡脚线,其程序框图设计如图5-2所示,程序代码略。图5.3是按程序设计框图求出的坡脚线。实现了堤坝坡脚线的计算机解法和自动绘图完全避开了图解法的繁琐求解过程,解决了堤坝开挖线施工放样定位问题。\n堤坝施工进度的可视化仿真研究图5.2交点坐标程序流程图Fig5.2TheProcedureflowchartofintersecfionpointcoordinate\n大连理工大学硕士学位论文图5.3坝坡脚线Fig5.3Thesketchmapoftopographyandthedamtoeline5.2土方量的计算本文采用了方格网法计算了土方量及混凝土浇筑量。方格网法是工程土方量计算中应用最为广泛的一种方法。运用这种方法,工程土方量的计算可以达到满意的精度。方格网法计算土方量的基本思想是:方格内挖或填方量近似等于被零线分割成的挖方或填方的图形面积乘以该面积上角点、零点的高度值计算公式及其说明:方格网按填挖分类的不同可分为零点线位置计算、正方形四点填挖方、梯形二点填挖方、五角形五点填挖方和三角形一点填挖方等五种计算方法,本文采用正方形四点填挖方的方法进行土方量的计算,如图5.4:\n堡塑堕三望堕塑型堕i塑塞图5.4土方量计算示意图Fig5.4Thesketchmapofearthworkcalculation其计算公式为:V=譬(h。+h:+h,+h。)V为填方或挖方的体积;a为网格的边长;h,,h2,h,,h;分别为网格四个角点相对于零线的高程值。\n大连理工大学硕士学位论文6堤坝施工进度可视化仿真系统的功能实现及应用实例本文开发的堤坝施工进度可视化系统,主要是通过数据输入子系统、查询子系统、基坑仿真子系统和坝体仿真予系统来实现。系统的主要功能如下:1、数据输入子系统:读取处理完毕的数据,并将其转化为程序语言,存放在数组中:2、查询子系统:可查询如系统信息、工程信息等内容,还可以对土方量进行查询;3、基坑仿真子系统:对基坑进行二维和三维的网格、渲染图进行显示;4、坝体仿真子系统:对坝体分高程的显示施工进度面貌;显示施工过程中坝体的剖面图、横道图和条形图等。本文对某坝址的工程实例进行了应用。该工程的平面图如图6.1所示:图6.1堤坝平面圈Fig.6.1Theinquireinformationofthedam坝顶高程为1991.5米,坝坡度为l:1.4,各马道高程图6.1中已示明。现将系统对该实例应用的成果介绍如下:\n堤坝施工进度的可视化仿真研究6.1查询功能系统的查询功能主要包括系统信息查询、堤坝工程信息查询以及土石方工程量的查询等。图6.2堤坝信息查询Fig.6.2Theinquireinformationofthedarn在图6_3的对话框中输入改变后的某一高程值,即可查询土方量。\n大连理工大学硕士学位论文图6,3土方量查询Fig.6-3Theinquireoftheearthwork6.2施工进度的可视化施工进度的可视化部分是本系统的主体,即利用读入的数据分时段分高程地生成三维地形、坝体及基坑的网格和真实感图形。6.1.1基坑的可视化基坑的可视化仿真包括基坑的二维网格、三维网格、基坑的渲染图等内容,成果如图6.4,图6.5,图6.6,图6.7所示。图6.4为基坑网格的平面图。图6.4基坑平面网格图Fig.6.4Thegridofthetwo-dimensionalbase图6.5为基坑的三维网格图。\n图6.5基坑三维网格图Fig.6.5Thegridofthethree-dimensionalbase图6.6、6.7为三维基坑的渲染图。图6.6基坑三维渲染图Fig.6.6Theromanceofthree-dimensionalbase\n大连理工大学硕士学位论文图6.7单体基坑三维渲染图Fig.6.7Theroyceofthesinglethree-dinMnsionalbase6.1.2坝体的可视化该部分从二维和三维两方面对坝体进行了可视化仿真,成果如图6.8、图6.9、图6.10、图6.11、图6.12、图6.13、图6.14所示。图6.8坝体平面网格图Fig.6.8Thegidofthetwo-dimensionaldam\n堤坝施工进度的可视化仿真研究图6.9和图6.10显示的是坝单体的三维网格和渲染图。图6.9坝体三维网格图Fig.6.9Thegridofthree-dimensionaldam图6.10坝体三维渲染图Fig.6.10Theroms/lceofthree-dimensionaldam图6.11为地形平面的网格图。48\n大连理工大学硕士学位论文图6.11堤坝平面网格图F远,6.11Thegridofthetwo-dimensionalterrain图6.12为地形的三维网格图。图6.12堤坝三维网格图Fig.6.12TheromⅢiccofthree-dimensionalterrain图6.13为坝体的三维渲染图。49.\n堤坝施工进度的可视化仿真研究图6.13堤坝三维渲染圈Fig.6.13Theromance"ofthree-dimensionaldam图6.14为坝体的三维俯视图。图6.14堤坝三维俯视图Fig.6.14Theplanformofthree,dimensionaldam\n大连理工大学硕士学位论文6.1.3进度形象图的显示图6.15显示的是坝顶高程为1991.5米时,坝体的剖面图,图6.16显示的是横道图,表示各个施工阶段的工期。图6.17为施工进度二维典型时刻进度条形图,图6.18是第一阶段高程为1965.0米时的坝单体进度面貌图,图6.19是第一阶段高程为1965.0米时堤坝进度面貌图。图6.i5坝体剖面图Fig.6.15Thesectionofthedam图6.17形象图Fig.6.17Thevisualizationofthedam图6.16横道图Fig.6.16Thelineofthedam\n堤坝施工进度的可视化仿真研究图6.18第一阶段高程为1965.O米时坝单体进度面貌图Fig.6.18Thevisualizationofthedamofthefirststep图6.19第一阶段高程为1965.0米时堤坝进度面貌图Fig.6.19Thevisualizationofthedamofthefirststep通过上述对堤坝厮貌及信息的显示,可以直观地了解施工进度的情况,并可根据堤坝同时期的施工特征来调整实际进度计划,从而为进一步的施工组织及混凝土浇筑方案提供合理的优化措施。6.3系统的其他功能6.3.1全屏显示功能在VisualC++编程中,有时需要采用尽薰大的区域来作为显示区域,那么实现程序的全屏幕显示就不失为一种很好的选择了[3H]o一、实现方法实现程序的全屏幕其实很容易,它的实现思路就是:首先要自定义一个窗口类,重载该窗口类的OnPaintO或OnDraw0函数,实现具体的窗口显示功能,然后调用API函数GetDeviceCaps(intnlnfex)函数来获取当前显示屏幕的尺寸,如nlndex取LOGPIXELSX值可以得到屏幕的宽度(以像素为单位),取LOGPIXELSY值可以得到屏\n大连理工大学硕士学位论文幕的高度。有了屏幕的尺寸还不够,还必须调用一个API函数MovcWindow0用来定位当前窗口到整个屏幕。需要读者注意的是,为了实现窗口与用户的交互,要在窗口中装载一个光标,另外,为了重全屏幕显示恢复到正常状态,需要在该窗口类中处理WM_KEYDOWN消息,在该消息处理函数中识别是否用户按下了ESC(退出)键,如是,程序恢复到正常显示状态。编程步骤如下:1、定义~个窗口类CGribbleWnd,它包含两个整形变量inpixelsX、m,_pixelsY分别用来存储窗口的尺寸:2、使用CLASSWIZARD为窗口类添加wMCREATE、WMERASEBKGND、WMr理VDOWN、WM_LBUTTONDOWN等消息处理函数,以实现全屏幕窗口和响应用户操作;.软件封面也是一个软件成败的关键,一打开软件,就能用良好的软件封面给用户一个好的印象,这无疑提高了软件的质量。添加软件封面的方法很多,本文按照如下步骤添加了软件封面。二、程序代码:在头文件中舔加以下栈码-=intm翦泌elg必∥存放屏幕的宽度{:intmpixelsY;//:存放屏幕的高度;CDC*m口Dc;,,设备生下丈对象;.HCURSORm锄柄;_hCursor;1/黼COLORREFm7,颜色对象,用来存放用户茸定义的颜色:_backColor;在源文件中添加以下代码:BOOLCGribbleWnd::OnEraseBlignd(CDC*pDC)∥重画背景窗口的背景{m碰jr一定义颜色;_backCRGB(t25,200,125),//自∥生成专食新斡画刷|『.灞茸定裂的颜色刷新显衣区域;CBrushcb(m.二backColor);◆一HBRUSHhOtdBrush=(HBRUSH)pDC->SelectObject(eb);REeTrect={O,O,m_pixdsX,m__pixelsY};pDC->FillReet(&reet,&eb);。pDC一>SelectObjectoaOldBrush);cb.DeleteObjeetO;retun_ITRUE;\n}intCGribbleWnd::OnCreate(LPCREATESTRUCTlpCreateStruct)//创建窗口;(if(CWnd::OnCreate(1pCreateStruct)一1)return·1;m_hCursor=LoadCursor唧LL.IDC—ARROW);//装载鼠标,用来与用户交互SetCursor(m_hCursor);/I将装载的鼠标附给生成的窗体;ShowCursor(tme);//显示鼠标;m_pDC=GeIDC0;N徽J当前窗体的设备上下文对象:m_pixelsX=皿.JDc一>G鲫)evicec印s(HORzREs);//获取屏幕的宽度m_pixelsY2m_pDCr>GetDevicecaps(VERTREs);/,获取屏幕的高度MoveWindow(0,0,mjinelsX,mjgixelsYI;//将当前窗口全屏幕显示;returnO;voidCGribbleWnd::OnLButtonDown(UINTnFlags,CPoinlpoint)/,响应用户的鼠标单壶操作:{hwalidate0;//重画窗口i)voidCGribbleWnd::OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags){if(VK_ESCAPE—nChar)/l拍j断当前按下的键是否为’'ESC”Desn'oyWindowO;/i#肖毁当前窗体;CWnd::OnKeyDown(nChar,nRepCnt.nFlags);)6.3.2软件的封面软件封面是一个软件成败的关键,一打开软件,就能用良好的软件封面给用户一个好的印象,这无疑提高了软件的质量。添加软件封面的方法很多,本文按照如下步骤添加了软件封面【3244】。\n大连理工大学硕士学位论文1.导入用作启动封面的图片;(1)在创建的新工程Splash中,选择ResourceView面板打开资源编辑器。右击”SplashresoWces”,在打开的快捷菜单中选择“Insert'’命令,选择其中的‘'Bitmap'’选项,然后单击“Import”按钮,准备导入用做启动封面的BMP图形文件。(2)在ResoureeView面板中,右击刚导入的“IDB_MITMAPl”位图资源,在打开的快捷菜单中选择‘'properties”命令,将ID值改为便于理解与记忆的“IDSPLASH”。2,新建一个对话框资源,在其中添加导入的位图;(1)在ResourceView面板中,右击“Dialog”资源。在打开的快捷菜单中选择“InsertDialog”命令,新建一个对话框资源。删除对话框中的“OK”“Cancel”按钮,选择自己喜欢的对话框风格.(2)在对话框资源中添加一个Picture控件,打开其”Pictureproperties”属性对话框.选择“General”标签,在”Tpye”下拉框中选择”Bitmap”选项,在”Image”下拉框中选择前面导入的位图资源的D值”IDBSPLASH".将对话框的资源的大小调整为和Picture控件大小相同.(3)右击资源编辑器,在打开的快捷菜单中选择”ClassWizard”命令,弹出”Addingaclass”对话框,为新建的对话框资源添加一个新类.在”NewClass”对话框的”Name”文本框中输入对话框类名”CsplashDlg",然后顺序单击“OK“按钮关闭‘'NewClass“和”ClassWizard”对话框.图6.18系统封厩Fig.6.18Thecoverofthesysten\n堤坝施工进度的可视化仿真研究结论与展望1,结论随着计算机科学技术的迅猛发展,在水利工程施工领域,如何充分利用计算机可视化仿真技术对施工进度及施工过程进行可视化与仿真,是水利工程界研究的一个重要课题。本文以实际工程为背景,着重探讨了堤坝篪工进度的可视化仿真,初步取得如下研究成果:(1)按施工要求,建立了堤坝施工进度可视化系统的总体框架,并按系统功能分为数据输入子系统、查询予系统、基坑仿真子系统和堤坝仿真子系统。(2)建立了基坑开挖线的计算模型,将vc++融合OpenGL技术,实现了堤坝坡脚线的数值解法及图形可视化,给出了土方量的计算模型。(3)开发了堤坝施工进度可视化仿真系统,该系统是一个面向对象的开放的系统,具有友好的操作界面、易于操作、方便快捷等特点,其功能概述如下:①大坝旌工进度面貌及其周边地形的三维显示。包括大坝施工阶段典型面貌的单体及整体网格图、渲染图的显示、大坝施工典型阶段的剖面图、横道图、柱状图等。②光照及材质的编辑。用户可以根据需要来编辑材质、光照,以达到最佳显示效果。③查询功能。可以查询软件、大坝的相关信息以及土方量等。2.展望本文针对堤坝施工进度的可视化仿真,开展了一定的研究工作。取得了初步的研究成果。就本文研究内容涉及的几个方面,还需要在以下几个方面进一步进行研究:(1)充分考虑并融入工程实际旌工过程中影响旄工进度的其他主要因素,如施工现场有关的水文、地质、气象和其它技术经济资料等。(2)本系统的数据读取是基于文档文件,需要事先对数据进行固定模式的组织和整理,这就一定程度上降低了软件的实用性。为此,可以结合GIS等软件,进行集成设计开发,从而增强系统的实用性。(3)增加系统的计算功能。像大坝这种大体积混凝土工程在实际施工中是采用分块分缝进行施工的。因此,在施工中需要考虑大量的细节问题,如怎样分块、分缝,\n大连理工大学硕士学位论文这些问题都需要进行大量的计算。还有坝的渗流计算、稳定计算、溢洪道的相关计算等等。\n堤坝施工进度的可视化仿真研究参考文献[I]李景茹,钟登华等.混凝土坝施工三维动态可视化仿真与优化.北京:系统工程理论与实践,1998.:2]齐东海等.水利水电工程施工计算机模拟与程序设计.北京:水利水电出版社,1997.[3]钟登华,刘登海.基于GIS的施工导流管理决策支持系统.天津:天津科学技术出版社,2001[4]钟登华,刘登海等.计算技术辅助设计与制造.北京:中国水利水电出版社,2004.[5j钟登华,刘东海等.工程可视化辅助设计的理论方法与应用.北京:中国水利水电出版社,2004.[6]欧阳建国等.拱坝ChDC的理论与实践.武汉:武汉大学出版社.2003[7]许百立,敖麟.水利水电勘测设计计算机应用的回顾与展望.水力发电,1995,2:4—7[8]刘静华,王永生等.晟新VC++绘图程序设计技巧与实例教程.北京:科学出版社,2001.[9]周霭如,林伟健等.C¨程序设计基础.北京:电子工业出版社,2003.[10]钱能.C++程序设计教程.北京:清华大学出版社,2002.[11]谢勇.VisualC十+6.0实例精通.北京:科学出版社,2000.[12]向世明.OpenGL编程与实例.北京:电子工业出版社,1999.[13]孙家光等.计算机图形学.北京:清华大学出版杜,1998.[14]DonaldHearn,M.PaulineBaker著。蔡士杰等译.计算机图形学(第二版).北京:电子工业出版杜,2002,[15]俞建.平面闸门可视化CAD集成系统研究:(硕士学位论文).南京:河海大学,2004.6.[16]吕恒.江南.基于OpenGL和地形图支撑下的地形三维显示.计算机工程.2004(4).[17]刘坤良.朱莉.梁俊.基于等高线的三位地形造型和可视化技术研究.图形图像.2003(6)[18]刘英.张瑞全.基于OpenGL的三维散乱点生成真实感地形的研究.山东科技大学学报.2003(6).[19]胡卓伟.杨国东.地形三维可视化的实现与应用.计算机应用.2003(i0)[20]唐泽圣.孙延奎.邓俊辉.科学计算可视化理论与应用研究进展.清华大学学报2001(4/5)[21]廖中石.杨化超.基于OpenGL的三维地形实时动态交互显示.现代测绘.2004(6)[22]靳海亮.康建荣.高景祥.基于VC和OpenGL生成三维真实感图形.舰船电子工程.2005[23]曾洪云.孙在宏.乔伟峰.基于OpenGL的地形三维可视化研究。现代测绘.2003(6)[24]王明强.计算机辅助设计技术.北京:科学出版社,2002.[25]刘藤红,屈振新等.Windows程序设计技术.北京:清华大学出版社,2004.[26]李多多.Windows2000编程.北京:人民邮电出版社,2000.[27]DavidJ.Kruglinski,ScotWingo。GeorgeShepherd著,希望图书创作室译.VisualC++6。0技术内幕(第五版).北京:北京希望电子出版社,2002.[28]侯俊杰.深入浅出MFC(第二版)武汉:华中科技大学出版社.2001.[293王子茹,周惠成,雷武奎.堤坝坡脚线数值解法及图形可视化研究.大连理工大学学报,2004,44(6):887—891,一58\n大连理工大学硕士学位论文[30]刘瑞新.Visualc++面向对象程序设计教程.北京:机械工业出版社.2004.[31]周洁.新编Visumc++6.0教程.北京:北京科海电子出版社.2002.[32]余锡光,吴康宁等.水利水电规划、设计与施工.北京:科学技术文献出版社,1994[33]吴媚玲.水工建筑物.北京:清华大学出版社.1991陈胜宏.水工建筑物.北京:中国水利水电出版社.2004.一59.\n堤坝施工进度的可视化仿真研究攻读硕士学位期间发表学术论文情况刘雪蜂.基于OpenGL与等高线的三维真实感地形生成方法.辽宁师范大学学报2005,28:1000.1735.《辽宁师范大学学报》主办单位:辽宁师范大学,核心期刊。属于学位论文第三章第三节的内容。60\n大连理工火学硕士学位论文致谢在大工学习整七年,向所有关心和帮助过我的老师和同学致谢!本文是在我尊敬的导师,王子茹教授的悉心指导下完成的。在大连理工大学攻读硕士学位研究生期间,王老师以其渊博的知识、严谨的治学态度和对科学事业的奉献精神时时刻刻激励着我不断地努力进取。在论文的选题、撰写、审阅、定稿过程中都倾注了她大量的心血。在此对王老师三年来的指导和帮助表达最诚挚的谢意。感谢测绘教研室的贾艾晨老师、袁永博老师、伊晓东老师、王卓老师对我的关心和帮助,感谢他们为我们提供了便利的学习条件。感谢同窗霍风霖,在共同学习的日子里,我们相互关照,相互帮助,这将给我留下最美好的回忆。感谢我的师弟任清波、梁耀龙、陈君、苏江峰,他们的欢声笑语使我在学习和工作中充满了轻松和快乐的心情,感谢我的女友胡柏翠对我无私的关怀和帮助,并祝他们在今后的学习中取得更大的进步!