(机械电子工程专业论文)opengl在数字化货车超限监测模拟仿真中的应用研究.pdf_第1页
(机械电子工程专业论文)opengl在数字化货车超限监测模拟仿真中的应用研究.pdf_第2页
(机械电子工程专业论文)opengl在数字化货车超限监测模拟仿真中的应用研究.pdf_第3页
(机械电子工程专业论文)opengl在数字化货车超限监测模拟仿真中的应用研究.pdf_第4页
(机械电子工程专业论文)opengl在数字化货车超限监测模拟仿真中的应用研究.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(机械电子工程专业论文)opengl在数字化货车超限监测模拟仿真中的应用研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西南交通大学硕士研究生学位论文 第1 页 摘要 货物装载是否超限直接影响到货物列车的运行安全,为此,开发了货车 超限监测模拟程序。模拟程序是在奔腾i v 微机上,以w i n d o w s 操作系统为开发 平台,使用v i s u a lc + 汪c 开发工具,基于o p e n g l 库进行开发的。 本论文主要工作包括: ( 1 ) 在w i n d o w s 平台上成功地开发了基于o p e n g l 的模拟程序,程序界面具 有良好的人机交互能力,界面分为动画显示视区和控制交互命令视区。 ( 2 ) 确定便利观察模型的o p e n g l 取景体。o p o n g l 为建立取景体提供了一系 列基本的变换函数,它由矩阵乘法来表达,包括模型化操作、视图操作和投 影操作。其中包括旋转变换、平移变换、比例变换、反射变换、正交投影变 换和透视投影变换。利用这几种变挟的组合建立取景体。 ( 3 ) 采用了增加颜色、纹理、消隐、材质和光照技术来加强三维几何模型 的真实感。利用消毖函数消除不可见的线面;利用纹理映射函数对模型进行 纹理贴图,增加了模型的真实感,并减少了建模的难度:利用材质函数为模 型指定材料的属性;利用光照函数表示模型所处的光照条件和环境。开发的 程序中使用了r g b a 颜色渲染模式。 ( 4 ) 根据要建造的三维模型的不同特点选择不同的建模方式。对形状比较 简单、有规则的几何模型直接采用o p e n g l 基本国元建模,在建模中和用了 o p e n g l 的二次曲面函数和n u r b s 求值器函数。复杂形体建模则是通过在3 d s m a x 交互建立模型,再由3 d s 接口程序把存储的三维模型数据转换为o p e n g l 的显示 列表。 ( 5 ) o p e n g l 系统利用双缓冲机制来实现动画。程序动画有货车运行的纵向 模拟动画和运行时的横断面图动画,两者动画实现了完全同步。运行的横断 面动画和铁道部制定的机车车辆限界进行实时比较来判断是否超限,超限则 报警。程序实现了在真实图像背景上运动的二维图像动画,采用了制作二维 图像掩膜图并分两次融合处理技术来实现该动画。 关键词:铁路货车:超限监测;o p e n g l ;模拟仿真;图形处理;图像处理 图像动画; 西南交通大学硕士研究生学位论文第1i 页 a b s tr a c t t h ec a r g ol o a d i n gs t a t e ss u c ha si ft h ec a r g o so u t l i n ei n t r u d e t h er a i l w a yg a u g eh a v eg r e a te f f e c to nt h et r a n s p o r t a t i o ns a f e t yo f r a i l w a yc a r g o t os i m u l a t et h e s ee f f e c t s ,t h ep r o g r a mt os i m u l a t et h e i n s p e c t i o ns y s t e mo fc a r g ol o a d i n gs a f e t y h a sb e e n d e v e l o p e do n m ic r o c o m p u t e rb yu s i n gv i s u a lc + + m f ca n do p e n g lf u n c ti o n su n d e rt h e e n v i r o n m e n to fm sw i n d o w s 2 0 0 0 t h em a i nr e s e a r c hw o r k si nt h ist h e si sh a sb e e ns u m m e da s f o ll o w i n g : 1 as p e c i a lp r o g r a mb a s e do nv ca n do p e n g ld e v e l o p i n ge n v i r o n m e n t h a sb e e ns u c c e s s f u l l ys e tu p t h ep r o g r a mi n t e r f a c eh a si n t e r a c t i v e a b ilit ya n dt h es c r e e nh a sb e e ns p li ti n t ot w op a r t s :t h el e f tp a r t u s e dt od i s p l a ya n i m a t i o no ft h r e e d i m e n s i o n a lg e o m e t r i cm o d e l sa n d t h er ig h tt ou s e r i n t e r f a c eo fc o n t r o l 1i n g 2 t l eg e o m e t r i cm o d e l sa r ep o s i t i o n e da n do r i e n t e d i nt h e t h r e e d i m e n s i o n a ls p a c ew i t hav i e w p o i n te a s i l yt ov i e wt h es c e n e a s e r i e s o ft r a n s f o r m a t i o n sf u n c t i o n so f o p e n g l s u c ha sm a t r i x m u l t i p l i c a t i o n ,i n c l u d em o d e l i n g ,v i e w i n g ,a n dp r o j e c t i o no p e r a t i o n s s u c ho p e r a t i o n si n c l u d er o t a t i o n ,t r a n s l a t i o n ,s c a l i n g ,r e f l e c t i n g , o r t h o g r a p h i cp r o j e c t i o n ,a n dp e r s p e c t i r ep r o j e c t i o na r ep r o v i d e dt o c o n t r o lt h el o c a t i o no fg e o m e t r i cm o d e l s 3 t h em o d e l s r e a l i t y h a sb e e ni n c r e a s e db y a p p l y i n gc o l o r , t e x t u r e ,h i d d e n - s u r f a c er e m o v a l , m a t e r i a la n d l i g h t i n g h i d d e n s u r f a c er e m o v a li s t oe l i m i n a t et h es o l i do b j e c t ss u r f a c e s w h i c ha r eo b s c u r e db yo t h e r s t e x t u r em a p p i n gi st oa p p l yt e x t u r e st o p o i n t s ,1 i n e s ,p o l y g o n s ,b i t m a p s ,a n di m a g e st oi m p r o v e t h er e a l i t y o fm o d e l sa n dd e c r e a s et h ep r o c e d u r eo fd r a w i n gg e o m e t r i cm o d e l s a m o d e l sm a t e r i a lp r o p e r t i e sd e t e r m i n eh o wi tr e f l e c t sl i g h t l i g h t i n g h a sa ne f f e c tw h e nt h e r ea r es u r f a c e st h a ta b s o r ba n dr e f l e c t1i g h t 4 d i f f e r e n tm o d e st od r a wg e o m e t r i cm o d e l sa r ec h o s e na c c o r d i n g t ot h ec h a r a c t e r i s t i co fm o d e l s i fm o d e ls h a p ei ss a m p l ea n dr e g u l a r , 西南交通大学硕士研究生学位论文第1ii 页 w eu s eb a s i cg e o m e t r i c p r i m i t i v e s t od r a w o t h e r w i s e c o m p l i c a t e d t h r e e d i m e n s i o n a l g e o m e t r i om o d e la r ec r e a t e di n t e r a c t i v e l yi nt h e s o f t w a r eo f3 d sm a xa n dt h e nt r a n s f o r mi t s3 d sd a t as t r u c t u r ei n t o t h r e e d i m e n s i o n a lr e p r e s e n t a t i o no fe n t i t i e sw i t hc c + + l a n g u a g ea n d s t o r ei n t od i s p l a yl i s tb yo p e n g l 5 o p e n g lp r o v i d ed o u b l e b u f f e r i n ga b il i t yt oc o m p l e t ea n i m a t i o n o p e r a t i o n t h ec a r g os i m u f a t e da n i m a t i o na n dc r o s s s e c t i o no fc a r g o a n i m a t i o na r ep r o c e s s e ds y n c h r o n o u s l y b yb l e n d i n ga n dm a s k i n g ,i m a g e a n i m a t i o no n t ot h es c r e e nw i t h o u te r a s i n gw h a t su n d e r n e a t ha n o t h e r i m a g ea r ei m p l e m e n t e d k e yw o r d s :r a il w a yc a r g o ,d i m e n s i o n l i m i ti n s p e c t i o n ,o p e n g l , i m i t a t es i m u l a t i o n jg r a p h i od i s p o s a l ,i m a g ed i s p o s a l ,i m a g ea n i m a t i o n 西南交通大学硕士研究生学位论文第l 页 第一章绪论 1 1 数字化货车超限检测概述 铁路限界是由机车车辆限界( 简称”车限”) 和建筑限界( 建筑限界简 称”建限”) 两者共同组成,两者间相互制约与依存。铁路限界是铁路安 全行车的基本保障之一,为了使机车车辆能够在定范围的路网内运行无 阻,不会因机车、车辆外型尺寸设计不当、货物装载位置不当、或建筑物、 地面设备的位置不当而引起相互碰撞事故,必须用界线分别对机车、车辆 和建筑物等地面设备加以制约。因此,限界是铁路各业务部门都必须遵循 的基础技术规程。 现行铁路运输规章制订了限界和铁路超限运输的标准。但是,货物列 车在运行中,由于受到货物品类、装载加固方案、路线和车辆状况,以及 牵引速度等多种因素的影响,货物和加固材料可能会发生位移或倾斜,从 而造成货物偏载或超限,而货物超限是造成行车事故的重要原因之一。一 旦发生行车事故,特别是重大行车事故,不仅会造成货物损毁、人员伤亡、 中断行车等重大经济损失,而且会造成重大社会影响,后果严重。 因此,必须加强对货物安全运输的控制,一直是铁路系统十分关注的 课题。准确、及时地检测出货物的装载尺寸,尤其是对货物列车在运行过 程中的是否超限检测和其超限程度的判定,尤为重要。通过各种高新技术, 如根据计算机图形图像学的理论应用智能识别技术,对铁路货车断面数字 摄像图片进行图像轮廓自动追踪,计算机再对货车的图像轮廓自动地进行 几何尺寸的解算、修正、规划,从而识别货车实际装载货物的高度和宽度, 并将其预先设置的计算机程序内的界限标准进行比较,得出监测结果。建 立货物列车运行安全监测系统,对运输过程进行全天候的实时监控,能起 到科学管理、超前防范的作用,并可通过对存储信息的定量和定性分析, 逐步摸索出货物运输事故的规律,为今后工作提供准确的依据,为提高货 运安全管理水平提供先进的手段。同时对实现货运安全管理规范化、系统 化、信息化目标奠定基础。在满足货运安全管理需要的基础上,监测系统 遵循经济合理、现场适应、处理及时、规范存储的原则,要达到以下基本 目标功能: ( 1 ) 实时。实旖要求有两个方面,一是时效性,信息监测的时效性在 西南交通大学硕士研究生学位论文第2 页 安全管理中是至关重要的,货物列车运行的瞬间状态必须及时获得;另 方面是信息处理的及时性,对获取的信息结果要及时处理,对不符合要求 的货物装载发出报警提示,并按需要进行分析处理,标识出车辆顺位、货 物超限部位。 ( 2 ) 准确。必须准确地反映出车辆和货物的实际状态,为货运检查工 作提供可靠的依据。 ( 3 ) 全天候。铁路的主要优势就是全天候运输,对环境的适应能力是 其他运输方式无可比拟的。因此,系统的实施必须建立在运输实际状况的 基础上,要满足各种气候和温度,以及适应震动、粉尘、电磁干扰、2 4 小时连续工作的实际条件。 ( 4 ) 网络化。为发挥系统的最大效益,要考虑到与t m i s 实现互联, 以达到数据集成、信息共享,这样可以方便地进行远程传输、查询。 ( 5 ) 适用。系统的软硬件设计面向现场作业人员,尽量采取简洁、直 观的工作界面,操作程序符合业务作业习惯,并设有操作提示、警示功能, 具有简便、易学的特点。 ( 6 ) 可维护与扩充。系统要留有足够的处理能力和通讯接口,满足现 场作业技术规范的新要求,同时具有较强的维护性和可扩充性、以便进行 功能调整与增加。 1 2 本论文的工作与组织 数字化货车超限监测是一个十分复杂的系统,涉及到计算机技术、 数据采集技术、传感器技术等多领域的系统工程。整个工作过程非常复杂, 影响其监测的因素也非常多。为了直观的演示与理解货车超限监测的工作 程序,预测监测过程中各种货运车的情况和断截面的尺寸,开发了货车超 限监测模拟程序,通过运行程序来为超限监测提供具有实际意义的指导。 这样,可以使操作人员较早的熟悉货车超限监测的全过程,合理确定货车 编组方式及货车配置部位,确定货车的合理运行时分等。这样能起到科学 管理和防范的作用。 本论文就是围绕编写货车超限监测模拟程序展开研究工作的,并对应 用o p e n g l 在p c 机上开发具有真实感的三维彩色图形做了一些相关的研 究。 论文共分七章,各章的内容简介如下: ( 1 ) 概述了货车超限监测系统的现实意义,开发货车超限监测模拟程 西南交通大学硕士研究生学位论文第3 页 序的目的及意义,最后是论文的组织。 ( 2 ) 货车超限监测模拟程序在w i n d o w s 操作系统下,使用v c + + 6 0m f c 开发工具,调用o p e n g l 函数库来实现的。分析了模拟程序的界面组成,介 绍了o p e n g l 的强大功挪h o p e n g l 工作的基本流程以及o p e n g l 在w i n d o w s 下 使用m f c 必须完成的初始化工作。最后是货车超限监测模拟程序界面的组 成,程序界面分为两大部分绘图视区即动画显示视区以及控制操作命令视 区,并对此给予叙述。 ( 3 ) 介绍了货车超限监测模拟程序的变换和取景体生成技术、在计算 机下图像的输出过程,以及图像输出的三个变换,模视变换、投影变换及 视区变换和一个处理即透视处理。 ( 4 ) 货车超限监测模拟程序应用了o p e n g l 的真实感技术一消隐、颜色、 光照和材质以及纹理来增加模型的真实感。本章详细介绍了o p e n g l 的消 隐、o p e n g l 颜色模式、光照、光照模型和材质,最后是纹理映射技术和 进行纹理贴图的步骤和应注意的有关问题。 ( 5 ) 概述了o p e n g l 的融合技术。程序中机车的模型就使用了两次融合 处理来完成的。最后是复杂曲线曲面的绘制,详细描述了o p e n g l 的b 样 条曲线曲面、n u r b s 曲线曲面和o p e n g l 的二次曲面,这些都是建立各种 车型模型的基础。 ( 6 ) 介绍在o p e n g l 下提高建立模型、显示模型效率的显示列表机制和 矩阵堆栈。分析了怎样用基本图元建模。详细介绍t o p e n g l 下三维复杂模 型的绘制显示工作,一般是通过建模软件建好模型,经接口软件把存储的 三维模型数据转换为o p e n g l 的显示列表,概述了3 d s 文件和o p e n g l 问的接 口程序的有关内容。 ( 7 ) 动画合成是程序中最至关重要的部分,首先介绍了动画原理和性 能要求及提高动画显示陆能的技术。o p e n g l 利用双缓冲机制实现动画。显 示动画时,设置合适的定时器s e t t i m e r0 函数及消息响应函数o n t i m e r0 , 在o n t i m e r 0 函数中设置货车运行的位置步长。不进行动画显示时,要删 除定时器。 西南交通大学硕士研究生学位论文第4 页 第二章货车超限监测模拟程序总体设计 货车超限监测模拟程序模拟各种货车运行并同时生成货车的断面尺 寸图,并和计算机内的机车车辆限界进行比较从而判断是否超限。程序中 建立的模型是三维几何模型并要求能交互式地控制,因此选择了目前市场 上使用最广泛的独立于操作系统和硬件环境的三维图形建模库一o p e n g l 。 操作系统和硬件环境选用w i n d o w s 2 0 0 0 系统和奔腾i v 微机。w i n d o w s 是 微处理机平台上使用最多的操作系统,它操作方便、人机界面友好并有良 好的稳定性和安全性。 本章首先介绍货车超限监测模拟程序的总体设计思想,接着讲解有关 0 p e n g l 的开发环境,最后介绍货车超限监测模拟程序的初始化和程序界 面组成。 2 1o p e n g l 开发环境 2 1 1o p e n g l 介绍 o p e n g l 是一种a p i ( 应用程序编程接口) 即三维图形和模型库,它在交 互式三维图形建模能力和编程方面有无可比拟的优越性。0 p e n g l 提供有 物体描述、旋转、平移、缩放、材质、光照、纹理、像素、位图、文本、 交互以及提高图形表现性能等方面的命令,基本涵盖了开发二维和三维图 形程序所需要的方方面面。与一般图形开发工具相比它具有以下突出特 点: 1 应用广泛 o p e n g l 是目前最主要的二维和三维交互式图形应用程序开发环境,己 成为业界应用得最为广泛的图形应用编程接口,被广泛地用于各种领域。 无论在微型计算机上,还是在工作站甚至使超级计算机上,开发人员都能 得益于o p e n g l 的高陛能和强大威力。 2 高品质和高。陆能 在任意开发平台下开发出的o p e n g l 应用程序,能创建出光线跟踪的高 质量静止或动画的三维彩色图像。无论是三维动画、c a d ,还是可视化仿 真,任何追求最高绘图效果和效率的程序都能受益于o p e n g l 的高品质和高 性能。这些使得广播、c a d c a m 、娱乐、医学图像处理和虚拟现实等领域 西南交通大学硕士研究生学位论文第5 页 里的开发人员能够创造令人难以置信的二维和三维图像。 3 出色的编程性能 o p e n g l 体系结构评审委员会独立负责管理o p e n g l 规范,这使得o p e n g l 具有充分的独立型。由于得到了工业界广泛的支持,o p e n g l 己成为真正开 放的、与厂商无关的多平台图形标准。 o p e n g l 在各种平台上已有近8 年的使用经验,加上规范的严格控制, 因此o p e n g l 具有良好的稳定性。它还具有良好的前瞻性、伸缩性和易于使 用等特点。 4 多平台性和硬件系统无关性 o p e n g l 与硬件无关,可以在不同的硬件平台上得到实现。例如:用 a u t o c h d 或3 d sm a x 的软件包可以方便地建立三维几何模型,但难以对其进 行移植和控制。如果将这些模型转化为o p e n g l 程序,就可以随心所欲地控 制这些模型、制作c a d 、制作三维动画、实现虚拟仿真、制作商业广告、 进行影视采辑,这样都使其制作出的三维真实感图形更方便、更真实。它 与硬件系统无关性,可以方便地将应用程序移植到另一个操作系统中。它 能直接面向硬件调用三维图形处理功能,所以处理3 d 模型速度很快。 5 网络透明性 建立在客户服务器模型上的网络透明性是o p e n g l 的固有特点,它允 许一个工作站上的进程在本机或通过网络在远程工作站上显示图形,可以 将大量的3 d 处理任务分散到各台电脑上同时处理。利用这种透明性能够均 衡共同承担图形应用任务的各工作站的负荷,也能使得没有图形功能的服 务器能够使用图形工具。这样,处理3 d 图形的功能比较全面,在程序调用 方面也比较方便。 综合以上所述,基于o p e n g l 的这些突出特点,我们选择了o p e n g l 库开 发货车超限监测模拟程序。 2 1 2o p e n g l 基本工作流程 图l 所显示o p e n g l 作的基本流程,程序从图中的左侧进入,通过一 系列类似管道的处理过程。一些指令画指定的几何物体,另一些在不同 的操作阶段控制对物体的处理。o p e n g l 能够有多种可选择的模式画图元 ( p r i m i t i v e ) ,而且一种模式的设置一般不会影响其他模式的设置。无 论发生什么情况,总是被顺序处理的,一个图元必须完全画完之后,后 续图元才能影响帧存。 西南交通大学硕士研究生学位论文第6 页 图1o p e n g l i 作的基本流程 在o p e n g l 工作的基本流程中,o p e n g l 经过一系列的运算处理,将几何 顶点数据和图像像素数据加工后生成待显示的帧。o p e n g l 首先将所有数据 ( 包括几何顶点数据和图像像素数据) 存储在一个显示列表中,稍后一次性 进行处理。然后处理管道的求值阶段,通过输入数据的求值多项式,提供 了一种高效的方法来近似绘制几何曲线和曲面。下一阶段对每个顶点的操 作和图元结合,对顶点进行变化和光照处理,对图元进行裁减以适合视区 大小。 下一步是光栅化操作,光栅化包含几何和物理映射两部分。几何操作 是将图元转化为二维图像:物理操作是计算图像每个点的颜色和深度等信 息。因而,光栅化一个图元由两部分操作组成,一部分是决定窗口坐标中 的一个整数栅格的哪些方块由图像占有;第二部分是为每个这样的方块计 算它们的颜色值和深度值。在这一过程中,通过几何操作和物理操作的二 维描述,产生一系列的帧缓存地址和相关数值。并将所有片段都进行逐个 片原操作,然后将处理结果作为像素存储在帧缓存中。其中的操作主要包 括:基于输入和先前存储的z 值对帧缓存( z 缓存) 进行有条件的更新,混 合输入像素颜色与存储颜色、屏蔽等其它对像素值的逻辑操作。 当输入数据是像素数据时,这类数据包括像素、绘图、影像将跳过上 述处理的“求解器”,作为像素值之间在像素操作阶段进行处理。这一阶 段的处理结果,或者存储为纹理内存以用于光栅操作阶段,或者采取同几 何数据一样的形式进行光栅化,并将结果片原融和入帧缓存中。 2 2 0 p e n g l 在m f c 下开发货车超限监测模拟程序的初始化 圆圜 西南交通大学硕士研究生学位论文第7 页 数字化货车超限监测的核心就是信息处理的及时性,模拟程序要充分 体现此特点就要有较强的可控性,因此程序必须具有良好的人机交互能 力。o p e n g l 仅仅是图形硬件的软件接口即图形函数库,在设计上实现了与 硬件系统无关的跨平台性能,但正是为了保持这种性能,o p e n g l 没有提供 丰富的界面操作,诸如程序流程控制、窗口操作、人机交互之类的命令或 函数;而v c + + 6 0m f c 提供了丰富的窗口、事件控制和管理函数,可咀方 便地使用菜单、工具条等工具实现应用程序和用户的交互操作,因此,二 者相结合开发此模拟程序。所以模拟程序是在w i n d o w s 操作系统下应用 y c + + 6 0 - f c 开发的o p e n g l 的工程。 o p e n g l 系统并不是w i n d o w s 所固有的,必须为w i n d o w s 窗口作一些初始 工作,才能使o p e n g l 图形在w i n d o w s 窗口中显示出来。在调用o p e n g l 函数 窗口时,要具有w s _ c l i p s i b l i n g s h 和w s c l i p c h i l d r e n 的窗口属性;o p e n g l 系统要使用单独的调色板系统,因此需要为o p e n g l 系统创建单独的逻辑调 色板。 从o p e n g l 的基本流程图看到,无论进入o p e n g l 的是何种数据,o p e n g l 最终都将进行像素操作,即把像素写到帧存上去。o p e n g l 应该知道怎样操 纵这些像素,因此必须设置像素的属性。这些属性使o p e n g l 明确;像素缓 存是单缓存还是双缓存;像素数据的颜色模式是r g b a 模式和颜色索引模 式;颜色数据的位数;深度缓存的位数;模板缓存的位数;交叠类型;掩 膜的可见性等。 每一个o p e n g l 显示设备都支持特定数目的像素格式,这些可获得的像 素格式是基于显示设备的能力。在w i n d o w s 2 0 0 0 下,窗口程序必须首先处 理设备描述表d c ( d e v i c ec o n t e x t s ) ,d c 包括许多如何在窗口上显示图形 的信息,即指定画笔和刷子的颜色,设置绘图模式、调色板、映射模式以 及其他图形属性。o p e n g l 是通过客户i t 务器方式实现图形显示,应用程 序作为客户工作并测用o p e n g la p i 。o p e n g l 客户模块同服务器模块通信 并发出应用程序的o p e n g l 命令。o p e n g l 服务器模块调用w i n 3 2 设备驱动接 口来使用驱动程序。一个o p e n g l 服务程序维护o p e n g l 环境。o p e n g h 环境是 o p e n g l 客户所处的o p e n g l 状态。o p e n g l 环境又叫着色描述表r c ( r e n d i n g c o n t e x t ) ,是o p e n g l 与w i n d o w s 系统之间的桥梁。所有的o p e n g l 调用都通 过着色描述表来完成。o p e n g l 着色描述表和w i n d o w s 设备描述表要有相同 的像素格式。在为一个设备描述表( d c ) 设置好了像素格式后就可以产生一 个与之相近的着色描述表( r c ) 。通过给出的设备描述表,着色描述表就可 西南交通大学硕士研究生学位论文第8 页 以在设备描述表指出的设备上绘图。其逻辑模式如图2 引国国国冈 旦生鱼鏖 图2o p e n g l 的图形显示 在调用0 p e n g l 库函数之前,必须利用当前窗口的设备描述表为o p e n g l 创建专门的着色描述表,并选入当前的窗口中而使之有效。w i n d o w s 程序 是基于消息响应机制的,程序首先响应一些w i n d o w s 消息使o p e n g l 内核得 到通知,然后调用0 p e n g l 系统专门为w i n d o w s 应用提供的扩展函数完成这 初始化工作。必须这样才能利用v c + + 中的m f c 进行0 p e n g l 编程。 终上所述,用o p e n g l 去初始化w i n d o w s 窗口的典型操作过程如下: ( 1 ) 建立正确的窗口格式; ( 2 ) 建立像素格式; ( 3 ) 创建一个着色描述表: ( 4 ) 将着色描述表设为一个线程的当前着色描述表; ( 5 ) 调用o p e n g l 着色函数; ( 6 ) 当0 p e n g l 处理结束后,将着色描述表设为非当前使用; ( 7 ) 释放着色描述表和设备描述表。 2 3 货车超限监测模拟程序界面 为了有效地、真实地进行模拟控制,要设置控制按钮、设定输入参数 的对话框以及对车型进行编组设置等来进行人机交互。这就需要编写友好 的界面来可以完成上述任务。一个好的界面是软件设计成功的半,好的 界面不仅能提高程序的易用性,而且在进行程序设计时,也能帮助程序员 很好地组织程序结构。 程序中把界面分为两大部分绘图视区,动画显示视区以及控制操作命 令视区,因此在程序中创建了两个视图分割,左部进行图形绘图及显示, 右部进行各种控制操作,而且各视图区在窗口中所占的比例还可根据显示 的内容进行调整。程序是通过从c s p l i t t e r w n d 来实现视图分割,需要修改 西南交通大学硕士研究生学位论文第9 页 主窗体类c m a i n f r a m e 的程序代码,在主窗体类中加个o n c r e a t e c l i e n t 事件处理函数,在其中创建一个视图分割,同时将两个视图作为视图分割 的两个子视图。下面介绍这两个视图。 2 。3 。1 绘图视区 在绘图视区中又分为三个子绘图区,其左边是模拟货车通过监测点的 纵向运行的动画显示区,它是程序的主显示区。右上部所要显示的区域是 运行时货车的横断面图,该横断面图与铁路部制订的机车车辆限界图进行 比较来判断是否超限。右下部的区域则是查询车型显示区,在该区内,可 以查询到各种货车模型。 程序是在单线程的窗口中建立的三个o p e n g l 绘图区,其方法是利用 g l v i e w p o r t 函数和g l s c i s s o r 函数。g l s c i s s o r 函数用来设置裁剪框,使得 只有在其裁剪框中的绘制命令才有效。建立每个绘图区时首先要激活裁剪 检测,再指定好它的裁剪框,这样其后的各种o p e n g l 命令将受到裁剪框的 作用,例如清除颜色缓冲区指的就是清除当前裁剪框内的显示内容,与其 它绘制区的内容无关,从而真正的实现将每个绘图区的内容独立开来。裁 剪框是通过下述函数进行定义的: v o i d9 1 s e i s s o r ( g l i n tx ,g l i n t y ,g l i n tw i d t h ,g l i n th e i g h t ) 其中参数x ,y 是裁剪框的左下角坐标,参数w i d t h ,h e i g h t 是裁剪框的 宽度和高度。 接着进行矩阵模式和投影模式的设置,最后需要用g l v i e w p o r t 函数用 来设置每个绘图区的视口,主要是用来调整图形绘制的比例。程序中的 g i v i e w p o r t 不和窗口的大小保持一致,而是和裁剪框的大小保持一致,视 口的指定与裁剪框的指定必须一致,否则就会导致某些图形变形甚至显示 不出来。 若整个窗口的宽、高分别为r e c t w i d t h ( ) 和r e c t h e i g h t ( ) ,窗口的 左、下坐标都为0 ,则我们指定的三个绘图区的左、下、宽、高数值分别 为: 第一绘图区:( 0 ,0 ,c x 2 3 ,c y ) 第二绘图区:( ( c x 2 3 + 1 ) ,( c y 2 + 1 ) ,c x 3 ,c y 2 ) 第三绘图区:( ( c x 2 3 ) + 1 ) ,0 ,c x 3 ,e y 2 ) 这三个划分方法是将左边窗口分为整个窗口的2 3 ,是程序的主显示 区;右边两个1 6 大小的绘图区,分别是显示货车的横断面区和货车模型 西南交通大学硕士研究生学位论文第1 0 页 的查询区。接着在每个绘图区中各自调用其相关的函数,每个绘图区域使 用的都是相同的坐标系统,这样便于编程和管理。 以下是设置主绘图区的程序,其它俩个视图区与其相似。图3 是分割 的三个绘图区。 g l e n a b l e ( g l s c i s s o r _ t e s t ) :激活裁剪操作 c r e c tr e a r :g e t c li e n t r e c t ( & r e c t ) ;获得客户区域 i n tc x = r e c t w i d t h 0i 客户区域的宽度为c x i n tc y = r e c t h e i g h t 0 :客户区域的高度为c y g l s c i s s o r ( 0 ,0 ,c x 2 3 ,c y ) :设置裁剪区域 g l c l e a r c 0 1 0 r ( 0 9 f ,0 9 f ,0 9 f ,0 o f ) :在裁剪区域内设置清空颜色 g l c l e a r ( g l _ c o l o r _ b u f f e r _ b i tg l _ d e p t hb u f f e r _ b i t ) : 清空颜色和深度缓存 g l d i s a h l e ( g l s c i s s o r _ t e s t ) :取消裁剪操作 f l o a ta s p e c t = ( f l o a t ) ( c x 2 3 ) c y :设置客户区的长宽比 g l m a t r i x m o d e ( g l p r o j e c t i o n ) :设置当前矩阵操作为投影矩阵 g l l o a d i d e n t i t y0 :加载单位矩阵,使投影矩阵复位到原点 g l u p e r s p e c t i v e ( 6 0 o f ,a s p e c t ,5 o f 7 0 o f ) :设置取景体 g l m a t r i x m o d e ( g l _ m o d e l v i e w ) :当前的矩阵操作为模视矩阵 g l l o a d i d e n t i t y0 :加载单位矩阵 g l v i e w p o r t ( 0 ,0 ,c x 2 3 ,c y ) :设置视口区域 图3 模拟程序的三个绘图区 亘堕銮通大学硕士研究生学位论文 第1l 页 2 3 2 控制命令视区 控制命令视区是由对话框生成的视图, 用于显示和获取用户的输入,便于人机交互。 其上的控件是与用户交互完成输入或操作数 据的对象。对于模拟货车运行这样的应用, 要力求设计出适合用户操作的程序界面。 程序界面的设计结果如图4 所示。从图4 以看出,控制命令视区主要有五个部分控件 组成:( 1 ) 控制程序运行的按钮控件( 2 ) 控 制动画速度的滑块控件( 3 ) 控制货车自由编 组的一组控件( 4 ) 视点调节控件( 5 ) 用于车型 查询的列表框控件。 控制按钮用于对程序进行模拟动画操 作,实现动画的播放、停止、回位等功能。 在进行模拟动画过程中按下回位按钮,则停 止动画操作并重新回到初始位置。关闭按钮 用于退出应用程序。 滑块控件用于操作模拟动画的帧速率, 可以拖动滑动条的滑块选择帧速。从左向右 拖动滑块,帧速即货车速度渐渐增大。 在货车运转过程中,每到站基本上要 对货车进行编组,显然各车型的运行顺序不 是恒定的。为了模拟这一过程,在程序中使 用随机变量来控制各车型的运行顺序,用户 控制货车运行中各车型的数量从而自由编组。 控制命令区的编辑控件和微调控件配合使用 控制车型的数量,通过调节微调控件中的当 前位置改变编辑控件窗口中显示的数值并反 馈给应用程序。货车重组是在前面车型数量 图4 程序的控制操作视区 下再次进行自由编组。 视点调节控件通过改变视点位置,从不同的视点角度来观看货车运行 的模拟动画显示区,从而可以观看到运行时货车的不同的方位。图5 显示 西南交通大学硕士研究生学位论文第1 2 页 的是视点为( 1 5 ,1 5 ,1 5 ) 时的模拟动画显示区。 图5 视点为( 1 5 ,1 5 ,1 5 ) 时的模拟动画显示区 列表框控件用于查看各车型模型,选择某项时该项将被高亮显示,同 时在右下部的查询车型显示区中显示出所选车型的模型图。 建立上述程序界面,一方面需要使用v c 的资源编辑器,另一方面还需 要为它们编写代码,这里不再赘述。 2 4 小结 货车超限监测模拟程序在w i n d o w s 操作系统下,使用v c + + 6 0m f c 开发 工具,调用o p e n g l 函数库来实现。本章首先介绍了o p e n g l 的强大功能和 o p e n g l 工作的基本流程。然后介绍y o p e n g l 在w i n d o w s 下使用m f c 必须完成 的初始化工作,如设置正确的窗口格式、像素格式、建立与设各描述表相 适应的着色描述表并当前化等。最后是货车超限监测模拟程序界面的组 成,由绘图视区和控制命令视区组成。 西南交通大学硕士研究生学位论文 第13 页 第三章货车超限监测模拟程序的变换和取景 计算机屏幕上只能画出二维图像,计算机绘图是产生三维物体的二维 图像。但是在屏幕上绘制图形的时候,必须在三维坐标系下考虑画法,程 序员完成的是想象出个三维空间,所有的操作都在这个空间中进行,这 就是取景体,究竟图形的哪些部分需要被画出来,完全交给其设置的取景 体来决定。在模拟程序中,要看到屏幕上输出的图像,就要考虑如何设置 取景体、如何在取景体中放置模型以及如何选择一个合适的观察点,这些 都需要一系列的计算机图形变换来完成。 3 1 图像输出过程 图形变换是取景体生成的基础。通过图形变换,可由简单图形生成复 杂图形,可由二维图形表示三维形体,可以对静态图形快速变换而获得图 形的动态显示效果。图形变换能够旋转对象、移动对象,拉伸、压缩和缩 放对象。从o p e n g l 流水线输入端的三维几何图元到输出端最终的二维图 像,中间要经历一系列的变换和处理,图l 简要地说明了这一过程。 窗口坐标系 图l 图像输出过程 从图l 中可以看出图像输出过程涉及到几种变换,以及变换过程中的 坐标系和矩阵,下面分别给予介绍。 1 图形变换操作 ( 1 ) 模型视图变换。对所要在o p e n g l 场景中显示的模型进行一系列 的变化,目的是将模型放置在场景中的合适位置。 视图变换是第一个应用到场景上的变换。它用于确定场景的有利位 骂一兰 蕊 翮 透 孺 西南交通大学硕士研究生学位论文第1 4 页 置。视图变换的目的是选择一个合适的视点以便获取所需的视觉效果。默 认情况下,观察点位于原点( 0 ,0 ,0 ) ,顺着z 轴的负向看( 向监视器屏幕“里 面”看) 。 模型变换用于处理模型和模型内的特定对象,该变换把对象移动到合 适的位置上,可以旋转它们并对它们进行缩放。视图变换本质上就是绘制 对象前应用到一个虚拟对象( 观察者) 上的模型变换。 在o p e n g l 中,模型变换和视图变换使用同一个变换一模视变换 ( m o d e 一v i e wt a n s f o r m a t i o n ,又称几何变换) 一次完成。模视变换包括平 移变换( t r a n s l a t e ) 、旋转变换( r o t a t e ) 和缩放变换( s c a l e ) 等三种。 ( 2 ) 投影变换( p r o j e c t i o n ) 。投影变换的目的是决定三维场景中的 物体到二维平面( 即图像输出窗口) 上的投影方式。投影变换是定义视图体 ( 取景体) ,也就是定义了在空间坐标系中屏幕最终显示的范围。或者说, 通过定义投影变换,确定了视野的范围。 0 p e n g l 将投影变换分为两种:正交投影( 也称正投影和正射投影) 和透 视投影。这两种投影变换分别定义了不同性质的视图体。正交投影将物体 直接映射到屏幕上。透视投影是对现实观察的仿真,在透视投影交换中, 越远处的物体显得越小,要制作逼真的画面,就必须用到透视投影变换。 ( 3 ) 裁剪变换。为了满足某些特殊应用的要求,除了视图体的六个裁 剪面,o p e n g l 还允许用户定义附加的六个裁剪平面。 ( 4 ) 视区变换( y i e w p o r t ) 。决定最终图像的尺寸及其在窗口中的位 置。视区变换将投影变换所定义的视图体中的内容对应到屏幕窗口中,通 过视区变换,确定了映射后的图像在屏幕中最终显示的图形。也就是说, 视区变换定义了图像晟终的大小和位置。 2 坐标系 0 p e n g l 内部均使用齐次坐标表示法,在图象输出过程涉及的几个坐 标系有: ( 1 ) 物体坐标系。o p e n g l 的场景

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论