前言:想要写出一篇引人入胜的文章?我们特意为您整理了隧道照明设计的软件开发实现范文,希望能给你带来灵感和参考,敬请阅读。
摘要:目前国内外没有专门针对隧道照明设计的软件。为实现隧道照明的自动化设计,设计一款专业的隧道照明设计软件。软件基于Winform框架进行开发。绘图是软件的核心功能,其中二维图形采用GDI+绘制,三维部分使用C#语言封装下的OpenGL图形软件接口实现。以VisualStudio为开发工具,利用SQLite实现数据库设计,软件能使设计人员快速、准确地制作设计方案,并进行仿真模拟。经过测试,软件整体设计符合规范要求,能有效减少隧道照明设计人员的工作量。
关键词:隧道照明;照明设计;GDI+;OpenGL
0引言
公路隧道是陆路交通体系中重要的组成部分,隧道照明设计作为光学、建筑学、信息学、交通安全等多个学科的交叉课题,是公路隧道设计过程中极其重要的环节。隧道照明设计过程中需考虑亮度、照度、均匀度、功率、可控性及安全性等设计参数[1]。现阶段我国对隧道照明的LED灯具设计与规划,仍采用传统散射光的配光设计,一般均为电气设计工程师代为规划,没有专业照明设计人员[2]。专业隧道照明配光软件是智能隧道技术及产业发展亟待满足的重要需求。针对隧道照明应用设计开发一款专业软件,可以方便照明企业与设计院快速、准确地制作设计方案,以便设计方选择灯具的配光、功率进行灯光布置。本软件是基于Microsoft.NETFramework开发环境,使用C#编程语言,基于Winform框架开发的一款标准的Windows桌面应用软件,其中二维图形绘制与输出采用GDI+图形设备接口,三维部分使用C#语言封装下的OpenGL图形软件接口。软件功能包括生成隧道的截面图、截面灯光图、纵向灯光图和三维仿真图,并能进行隧道的分段亮度计算,生成隧道布灯图。该软件极大简化了整个隧道灯光设计过程,且整体设计符合规范要求,能有效减轻隧道配光师和隧道灯光安装人员的工作强度.
1系统设计
1.1系统总体架构(1)总体架构。软件采用C#语言编写,是基于微软.netframework框架的Winform桌面应用程序[3]。(2)数据库架构。采用轻量级的SQLite数据库,用于存储用户权限信息、灯具信息和文件浏览历史信息等。(3)绘图与图像输出。软件主要功能是实现各种仿真和布灯图的绘制与输出。绘图主要是采用C#语言内置的GDI+进行绘制[4],采用C#语言内置图形对象的输出方法进行输出。(4)三维图像的生成。软件的三维图采用SharpGL控件进行绘制。该控件在底层封装了OpenGL框架,能进行三维建模[5]。1.2系统功能模块设计根据软件界面划分的各模块的主要功能如下:(1)登录界面。该界面提供登录功能,用户输入用户名和密码后,登录系统,系统会根据用户所属类别,加载不同的功能页面。同时还提供浏览模式,该模式无需密码就能进入系统,但是只提供打开和浏览功能,不能进行任何修改。(2)软件主页面。该界面提供打开项目与新建项目的功能,点击相应按钮即可进入相应功能,并且提供打开项目历史记录的功能,可快速打开最近打开过的项目文件。(3)参数输入界面。该界面的功能是让用户输入隧道的基本参数、灯具的基本参数和灯具的布置参数还有项目相关信息等,为后续的仿真与设计提供基本的数据[6]。(4)隧道参数界面。该界面会展示前一界面输入的各项参数,如需修改可在此界面进行修改。后续也可在此界面展示其它界面中修改的隧道参数。(5)软件功能主界面。在打开项目或者新建项目输入参数确认后会进入此界面界面左侧有一列功能按钮,点击相应功能按钮即可进入相应功能,在界面右侧显示相应功能的子界面。(6)隧道截面图界面。该界面根据隧道基本参数自动生成隧道的截面图,并标注各项基本参数,让设计者对隧道有基本的直观认识。(7)隧道截面灯光图界面。该界面根据灯具的布置参数自动生成隧道的截面灯光仿真图,用户可根据此图参照设计规范和实际需求对灯具布置参数进行修改以满足实际项目需求。(8)隧道纵向灯光图界面。该界面根据灯具的布置参数自动生成隧道的纵向灯光仿真图,用户可根据此图参照设计规范和实际需求对灯具布置参数进行修改以满足实际项目需求。(9)分段亮度计算界面。该界面提供根据隧道照明设计规范自动计算的各段亮度值,如果实际项目中需要对其进行调整,可在该界面中完成。(10)布灯图界面。该界面根据隧道和灯具的各项参数自动生成隧道的布灯图并以矢量图格式输出,与布灯相关的各项参数能在此界面进行修改。(11)隧道三维图界面。该界面支持查看隧道的三维模型。(12)灯具数目统计界面。该界面支持对隧道布灯图中所使用的灯具规格和数目的统计。(13)权限管理界面。该界面支持对当前用户密码的修改,新建用户和重置用户密码等功能。该界面与用户权限相关联。只有管理员账户才能使用全部功能。
2系统实现
为方便设计人员使用,本软件采用基于C#语言的Winform框架进行开发,是一款标准的Windows桌面应用程序,由于软件功能模块较多,只选取最核心的功能介绍系统实现。2.1隧道、灯具和其它辅助类建立由于C#是面向对象开发语言,所以在正式功能算法实施之前,先要进行模型也就是类的建立。类就是对具有相同数据元素和功能对象的抽象,实际上就是一种数据类型。类的构成包括字段和函数。当用户新建项目时,要求用户输入隧道和灯具及灯具布置的相关参数,隧道参数包括[7]:车道宽度、左侧检修道宽度、右侧检修道宽度、建筑界限高度、隧道顶高、检修道高度、隧道长度、设计时速、纵坡、车道数、洞外亮度、通行方式、设计小时交通量等。灯具参数包括各分段灯具的功率、光效以及灯具利用系数、养护系数等。灯具安装参数有基本灯安装间距、灯具安装高度、灯具与隧道中线的距离、安装倾角、投射角、纵向投射角、布灯方式、出入口安装余量等。对于所需的参数,都封装到隧道类和灯具类中,然后再对其中需要处理的数据进行方法的封装[8]。除了两个核心类,软件同时需要建立一些辅助仿真与绘图的类,如三维图绘制所需的向量计算类和摄像机类[9]。还有隧道相关计算需要的隧道工具类,管理项目和权限的项目类和用户类等。 2.2隧道截面图与平面配光图绘制各种二维图形的绘制与输出是本软件的核心功能,采用图形设备接口GDI+(GraphicsDeviceInterface)进行二维图形绘制。它是一组通过C++类实现的应用程序编程接口,主要负责在屏幕和打印设备输出有关信息。具体编程流程是:先创建一个图形对象(Graphics),然后通过面向对象的编程方式调用它的各种方法,如Draw-Line(Penpen、Pointpt1、Pointpt2),DrawElilpse(Penp、floatx、floaty、floatwidth、floatheight),实现图形绘制[10]。对于隧道建筑建模而言,隧道的走线及净空断面是模型的关键,走线指决定隧道长度及方向隧道纵向的主轴中心线净空断面决定隧道的外形结构。由于灯具属于隧道内建筑,还需要考虑隧道的建筑界限[11]。根据《公路隧道设计规范》关于隧道截面设计图的规定,软件通过GDI+接口进行编程绘制隧道的截面图。同时要根据输入的灯具布置参数如投射角、安装倾角灯进行隧道配光的仿真,包括截面与纵向灯光的配光仿真,其主要意义是验证配光的均匀性,同时使设计能满足一些其它配光上需要考虑的因素,如隧道配光要求灯光能照射到隧道侧壁两米高的范围,这样能通过侧壁反射,提高路面大概10%亮度。2.3隧道分段亮度计算隧道照明是隧道各项设计中一个重要环节,通常一个隧道的最低亮度由其车流量和设计时速决定[12]。由于人眼对光学的适应性是一个逐步的过程,所以从交通安全角度上,隧道被分为入口段、过渡段、中间段和出口段,从亮度角度而言先逐级递减,后逐级增加。《公路隧道照明设计细则》中对各个分段的亮度进行了详细的建议性规定,软件可根据用户输入的参数对隧道进行自动分段,并根据《公路隧道照明设计细则》计算出各段的亮度值,某些情况下设计师希望改变亮度值,软件也提供了修改各段亮度的功能,以方便调整后续的布灯操作。2.4隧道布灯图绘制与输出隧道布灯图绘制是该软件最核心的功能,它能直接指导隧道布灯工作[13]。隧道灯分为基本灯与加强灯,各个分段都要布置基本灯,基本灯布灯间距可根据规定算出参考值,设计师也可手动修改其值,一般除了中间段,其它分段都要布置加强灯,可根据计算出的各段亮度值、灯具的布置系数,结合《公路隧道照明设计细则》中的计算公式进行计算:Eav=η•φ•Μ•ωW•S由上式可得出各段的加强灯间距和各段基本灯间距内加强灯的个数。如果设计师需要修改各段基本灯间距内加强灯的个数,也可手动修改。绘图时同时要考虑隧道的布灯方式,布灯方式主要有:中线布置、中线侧偏布置、两侧对阵布置、两侧交错布置4种,绘制时可根据实际需求进行选择,布灯同时需要考虑一些其它条件,如入口段布灯通常比较密集,可以选择将入口段的灯具布成两排,这也是设计师通常会采用的布灯方式。隧道出口和入口一般会留有一定的余量不进行布灯,绘制布灯图时也要考虑该因素[14]。隧道布灯图要进行一些标注,比如要标注各分段名称及其长度、各分段加强灯的间距、出入口余量长度、行车方向,同时还要区分加强灯与基本灯。绘图时采用GDI+图形设备接口进行编程,输出时采用windows的矢量图格式emf进行输出,可以方便后期的编辑与使用。2.5隧道三维图绘制首先运用OpenGL建模功能。OpenGL虽然提供基本的点、线、多边形的绘制函数与一部分复杂空间体及其组合,然而面对具有复杂三维结构的隧道,无法直接使用函数进行绘制[15]。使用OpenGL以顶点为图元,以空间多边形为空间体的各个面,可以避免凹多面体不能被函数直接表示的问题,以基本几何图形尤其是矩形为基础绘制隧道形状。然后运用OpenGL中的纹理映射、材质的光反射设置、环境光源设置,完成对隧道内地面、检修道、隧道墙壁的材质、纹理等的渲染,使三维场景可以模拟现实中的隧道外形。OpenGL提供视点变化、视角变换、模型变换、投影变换等函数。利用摄像机类中封装好的的变换可以在模拟隧道中任意改变观察者位置,转变视线方向。利用封装方法可以初始化自己的视点,指定观察角度、方向,也可以静态地观察图像。通过这些方式,可以实现在模拟隧道中自由漫游,方便对模拟隧道进行多角度全方位的观察[16]。OpenGL中封装了计算光照强度和光照方向的算法,其中以平行光和二次衰减光为主,可以利用其确定光源位置、光源属性等接口完成方法的封装。通常由于第一个光源与其它光源有一定设置差距,经常被用作整体环境光源,在本文即为自然光源(洞外亮度L20(S))。完成光源设置后,根据光源的属性,以及隧道外观的材质属性可得到隧道内部呈现的亮度,场景中光强的调节通过改变光源属性中的RGBA分量实现。
3系统测试
软件安装后,通过桌面图标打开软件,进入登录界面,输入默认的管理员账号与密码,点击登录能正常进入软件主界面,当输入了错误的用户名或密码后,将提示密码错误,不能进入软件。进入软件主界面后能选择是新建项目还是打开已保存的项目,还能快速打开已记录的历史项目。当选择新建项目后,进入参数输入界面;当输入符合软件校验规则的参数后可进入软件的功能主界面,当输入的参数不符合预设规则时,软件会给出相应提示。软件功能主界面默认显示隧道的属性页面。主界面左侧列出各个子功能界面的按钮.
4结语
本文设计并实现了基于C#和Winform框架的隧道照明设计软件,功能包括生成隧道的截面图、截面灯光图、纵向灯光图和三维仿真图,并能计算隧道的分段亮度,生成并输出隧道布灯图,经过多次测试及工程师试用证明,该软件能大幅简化整个隧道的灯光设计过程,且整体设计符合规范要求,能有效减轻隧道配光师和隧道灯光安装人员的工作量。
参考文献:
[1]刘翠萍.基于LED的公路隧道照明设计与中间视觉下LED隧道照明研究[D].青岛:中国海洋大学,2012.
[2]周晓波.LED灯光照明系统的仿真研究及其软件开发[D].武汉:武汉理工大学,2004.
[3]缪平,朱晓辉,丁浩,陈苏蓉.WinFrmo界面统一管理方法研究[J].软件导刊,2017,16(09):1-3.
[4]陈本峰,苏琦.WindowsGDI+的研究与应用[J].计算机应用研究,2003,13(03):56-59.
[5]王晓松,徐妍,田董炜,刘志强,胡梦涛.SharpGL三维建模技术实现[J].软件导刊,2017,16(04):205-208.
[6]杨超,程翠.公路隧道照明灯具利用系数研究[J].照明工程学报,2017,28(1):97-101.
[7]涂耘,史玲娜,王小军.新旧规范对比下的隧道照明节能设计研究[J].照明工程学报,2015,26(1):50-54.
[8]DEGNANJ.Lightingmountains:thestateoforegonmakesitstun-nelsystemalotbrighter[J].Roads&Bridges,2005,43(10):42-46.
[9]祝敏.基于OpenGL的LED灯光情景仿真[D].哈尔滨:哈尔滨理工大学,2007.
[10]闫宇晗,常鑫.在C#中用GDI+实现图形动态显示[J].计算机技术与发展,2006,8(12):117-118+232.
[11]但小岗.SQLite数据库在WindowsForms应用开发中的应用研究[J].价值工程,2016,35(21):141-142.
[12]王鹏展.LED道路照明光环境优化技术探索[D].上海:复旦大学,2011.
[13]张善伟.公路隧道照明设计中DIALux的适用性及建模方法分析[J].照明工程学报,2014,25(5):93-97.
[14]张玲,陈元春,孙勇.基于GDI+的通用图形平台设计[J].计算机工程,2005,23(12):218-220.
[15]吴伟和,郝爱民,李智.基于直接光照的全局光照模拟[J].计算机工程,2009,35(10):257-258.
[16]李宁.高速公路隧道照明节能技术及控制方法研究[D].昆明:昆明理工大学,2013.
作者:王鹏宇 秦会斌 屠凡 单位:杭州电子科技大学电子信息学院