APP下载

三维场景中截面流场绘制技术研究

2011-07-16康苏海

水道港口 2011年5期
关键词:交点插值流场

康苏海 ,金 生 ,刘 洋

(1.大连理工大学海岸和近海工程国家重点实验室,大连116024;2.交通运输部天津水运工程科学研究所工程泥沙交通行业重点实验室,天津300456;3.天津市南港工业区开发有限公司,天津300456)

在二维显示设备上表现三维流场,实际上是对三维流场场景进行平面投影。如果将三维流场以示踪粒子方式表示,经过投影后得到的平面显示流场中的示踪粒子必然是前后重叠、上下遮盖,无法清晰地表现三维流场,达不到模拟三维流场的效果。以往,为解决该问题,通常采用截面流场形式对三维流场进行模拟[1-3],并分为水平截面流场和垂直截面流场两种方式。无论哪种方式,都是首先根据给定的条件在三维场景中获取截面,然后通过正投影方式将处于截面上的示踪粒子的三维流场数据向截面进行投影,并在截平面内以二维流场的方式绘制,且流场绘制是在单独的二维画布上进行的。Mike21、Delft3D等水动力数值模拟软件都是采用这种方式实现对三维流场模拟的。该方式在独立窗口进行截面投影流场绘制,虽然通过多次获得多个截面达到认识三维流场的目的,但是由于脱离所在三维场景而相互独立模拟,不能实现多截面流场的同时对比比较,而且直观性不强、表现不生动。

截面是空间三维曲面,在三维场景中具有明显立体感,设想将获得的截面及流场直接在其所在的三维场景中以三维方式进行绘制,可以解决上述通常截面流场显示方式的弊端,不仅使截面流场有空间位置感,截面流场表现也更为真实,而且通过三维场景中多个截面流场的同时模拟,能够更为方便地比较和认识三维流场特性,表现方式也更生动。下面首先论述复杂边界及地形条件下的截面生成算法,然后讨论截面流场的投影算法,最后以WPF为三维图形平台,实现三维截面流场的仿真模拟。

1 立体截面获取算法

在三维场景中绘制截面,需根据给定的截面参数(水平截面的高程值或垂直截面的平面走向拐点坐标集合)求出截面和三维地形曲面的交点坐标集合,进而构造并生成截面构造点及单元链接关系,并以三维曲面方式在三维场景中绘制截面。同时需要记录截面单元节点与原有节点的对应关系,以实现新旧节点对应关系,并由此得到构成截面的节点处各物理量值。

1.1 水平截面生成

三角形是最简单的平面多边形,由它生成的三棱柱体与某平面相交时,出现的相交情况最少,便于交点集合的判断与截面生成。考虑计算域平面上采用三角单元网格(四边形或其他多边形可以进一步细分为若干三角型),垂向分层方式(目前三维水动力计算基本采用垂向分层方式生成三维网格)构造三维计算网格,于是每个三维单元实际上是上下底不一定平行的三棱柱体。

在进行水平截面与三维计算域相交集合判断时,因为水平面上采用了三角形网格,所以对每个水平单元所具有的3个节点分别进行相交情况的判断(每个点的高程都有可能大于、等于、小于截面高程值),根据排列组合原理会出现27种组合方式,将27种组合方式进行归类,最终得到10种本质上不同的组合方式(表1)。表1中L、E、G代表地形节点高程和指定截面高程的大小关系为小于、等于、大于,“代表标志”为标志字符串,列举了节点描述情况中的某一种情形,例如第9种截面交点描述中的“LLE”包含了“LEL”、“ELL”2 种组合方式,代表了3种组合形式。

分析表1,发现当标志字符串中不含L时,该单元不必计入有效单元,否则当标志字符串中不含有G时,该单元直接计入有效单元,其他情况需要通过插值新节点构造新的有效单元。插值节点重新构造有效单元时,根据大、小、等出现的顺序,分不同情况构造新单元,保证单元节点按逆时针排序。

根据上述原理,首先循环所有地形节点,比较节点高程与Zm的大小关系,得到标志字符(G、E、L),然后对模型域内全部地形单元进行循环判断,根据单元3个节点的标志字符得到3个字母构成的单元标志字符串,只对其中含有L的单元进行新单元构建运算,因为没有L的单元表示截面截到了地形以下,是无效的,而部分含有E的单元也是截到了原有节点上,该节点会在相邻的单元循环时考虑到,因此仍然可忽略。针对单元标志字符串中既含有L又含有G或E的,需要进行交接点插值,构建新的节点,根据指定水平截面与各单元节点的有效相交点重新构造水平截面三角单元的节点及单元连接关系,从而完成水平截面的几何构建。

表1 地形曲面节点高程与水平截面高程关系Tab.1 Relationship of terrain surface node elevation vs.horizontal cross-section elevation

1.2 垂直截面生成

垂直截面生成可以通过指定x值截取平行于y轴的垂直平面、指定y值截取平行于x轴的垂直平面或者在水平面内用户通过鼠标操作指定任意折线构成的垂直截面。

在垂直截面生成时,由于折线点可能位于域外、域内、岛内的任何位置,加上折线会穿过岛屿,甚至穿过域外部分,所以构建生成垂直截面的函需要考虑上述多种因素。

通过分析,垂直截面与域内的地形曲面网格三角形单元相交,会出现4种情况:(1)交线只通过单元某一顶点;(2)通过某一顶点和该顶点对面的边;(3)和某边重合;(4)穿过单元的2个边。情况(1)必然和临接三角形有(2)、(3)类型的相交,考察临接单元时再进行统计,所以参与统计的情形是(2)、(3)、(4)。这 3 种情况下,对三棱柱的垂直切割必然会产生大小不一的矩形,这些矩形都因为分层而被划分为NL个(层数)小4边形(垂向两边平行,左右高程不一致导致上下不平行),图1为垂直截面的某一部分示意图。

将每一个小四边形的左下角顶点和右上角顶点连接,便产生一系列三角形,它们构成垂直截面的三维网格曲面几何要素。图1-a表示指定垂直截面在平面走向与平面网格局部相交的示意图,图1-b为截面垂向与三维分层单元的相交情况。垂向被分为两层,按截面定义时截线折线走向,确定垂直截面的法向方向,于是按右手法则确定三角单元的构成,如图1中ABC、ACD、DCE、DEF为其中部分构成单元。

生成垂直截面的关键是如何根据指定的截面走向折线顺序查找相交三角单元,求解交点序列,构建截面节点集合,从而生成最终的垂向截面。从建立通用的垂直截面生成出发,考虑到截面走向折线的随意性,对折线中每个线段单独处理,最后进行合成,于是问题转化为如何求解任意线段截取垂面的问题。

求解线段与平面显示域三角单元边的交点序列,可以采用文献[4]中关于方向追踪法的描述方法,确定折线经过的所有单元,并用线段相交算法求出交点。问题的关键是采用该方法必须考虑到如何处理各类特殊情况,包括线段起始点不在域内、线段穿越了内部岛屿、线段中途穿越域外区域等。当线段起始点不在域内时,如果在域外,则求出线段与外边界线的交点并记录交点所在的单元号准备下一步方向追踪法处理之用;如果起始点在内部岛屿内,则求出线段与该岛屿边界线的交点并记录交点所在的单元号。当线段穿越内部岛屿时,标记该段垂直截面的结束并查找线段与岛屿边界的另一个交点,然后继续下一段垂直截面的交点计算。当线段中途穿越域外区域时,标记该段垂直截面的结束并查找线段与外边界的下一个临接交点,然后继续下一段垂直截面的交点计算。

自由表面三维流场的水面高程在整个模拟时间段往往会随时间的推进而上下变化,因此生成垂直截面时,需要指定整个过程中最高水面高程作为垂直截面的上边界,垂直截面流场模拟过程中根据水面变化值动态修改垂直截面的上边界,达到自由水面追踪之目的。

下面给出垂直截面生成步骤:

(1)初始化先判断指定平面折线各拐点P1,P2,…,PM所在位置并进行记录:落在计算域外赋值为-1、落在计算域赋值为0、落在内部岛屿内赋值为岛屿索引号(岛屿索引号必然为大于0的数值);

(2)若完成所有段计算则转到步(4),否则取线段PnPn+1进行计算;

(3)首先确定Pn点所在单元索引号,若Pn不在有效区域内,查找PnPn+1与边界交点坐标及交点所在单元索引号。若Pn落在域内,根据坐标值利用分域法找到所在单元索引号;若Pn落在域外,分块法定位最近交点并利用分域法[4]定位所在单元索引号;若Pn落在岛屿内部,对所在岛屿边界线循环查找交点位置并利用分域法定位所在单元索引号;

(4)用递归法获取线段PnPn+1在平面域内网格线的交点序列,同时记录被岛屿或陆地分割的位置;

(5)分段构造垂直截面网格单元,落在岛屿内部或陆地上的截面部分不被记录和显示;

(6)返回(2)继续下一线段的计算;

(7)合并所有分割的垂直截面,形成一个整体三维曲面集合在场景中显示。

给定坐标值截取平行于x或y轴的垂直截面的情况是上述任意走向垂直截面生成的特殊情况,不再赘述。

2 截面流速投影

获取截面后,采用对截面上每节点方式或在截面内随机布点方式布设流场示踪粒子,参见文献[4]。确定示踪粒子位置后,需要在三维空间内对粒子位置处的流速进行差值,参见文献[5]。水平截面的流速投影较为简单,实际上就是x、y方向的流速分量的合成流速,在此不做讨论。

垂直截面上的流速投影需要经过若干次坐标变换。三维流速矢量向垂直截面投影的原理图如图2所示,其中xyz坐标系是模型现场坐标系将原点平移至粒子坐标位置的局部坐标系,ABCD为截取的垂直截面,截面与x轴夹角为α(逆时针方向为正)。

绘制流速矢量箭头时,先将三维流速u、v、w 3个分量向ABCD截面投影,则u、v在ABCD的投影合成就是 Uc=u·cosα+v·sinα,w 是截面投影流速矢量c的另一个垂直分量,于是可以在截面局部坐标系(以示踪粒子所在位置为坐标原点,截面走向为x′轴,平行于 z 轴方向为 y′轴的平面坐标系 x′o′y′)内绘制出截面流速矢量箭头。通过坐标变换,可以较为容易地将局部坐标系中绘制的流速矢量箭头换到现场坐标,最终完成截面流场质点流速矢量的绘制。

3 WPF实现截面流场绘制

截面流场要绘制在三维场景中,首先要选择三维图形平台建立三维场景,微软WPF是轻量级三维图形平台,可以实现三维场景的搭建,另外WPF集成与MS.NET框架下,随微软操作系统一起发布,具有较广的应用环境[6-9]。

3.1 截面流场绘制

截面流场模拟时,只能描述截面二维流场特性,垂直于截面的另一速度分量不会得到体现,如果此时仍采用拉格朗日法模拟截面流场,已没有实际意义,因为某时刻在截面上的粒子经过一时间段运动,完全有可能已“逃离”截面,因此已不可能得到其位于截面上的流速。既然截面流场只能代表位于本截面上的粒子的速度投影,采用欧拉法描述截面流场更为科学。

对于水平截面流场,通过前面的水平截面生成算法,得到了截面上所有节点对应的原有节点的索引号,因此不难在平面上找到对应的物理量,关键是如何在垂向插值得到截面节点位于哪一个分层或单元。考虑垂向平均分层的三维网格构建情形,首先读取二维水面高程,减去相应点底床高程,得到净水深,于是通过截面高程所在静水深的位置,计算得到该点所在垂向层的位置,然后通过垂向插值计算,得到截面节点物理量值。对于通过位置插值得到的新的一类截面节点(即在构建水平截面时,截面与底部曲面相交而插值得到的点),在平面上需要进行二次插值以保证节点物理量的精度。

对于垂直截面流场,由于构成截面的大部分节点不和模型节点重合,需要进行空间差值。空间差值分平面差值和垂向差值两步进行,首先根据垂向截面与平面网格的交点关系,在水平方向上差值得到通过粒子所在位置的垂线与上下两个分层交点的物理量,然后根据粒子所在垂向层的位置比例,插值得到最终的物理量值。垂向截面流场模拟时,需要考虑模拟过程中由于水位变化造成动垂向动网格而引起的垂向插值变化,准确计算物理量的空间插值,还要特别注意到水位涨落引起的流速质点的显示与隐藏。

3.2 截面叠加标量场

在截面流场模拟显示的同时,有时需要对截面上某标量物理量如压强、水位、盐度、温度、某污染物浓度值等同时进行显示,这可以通过截面纹理进行表现。模拟开始前建立标量场对应的色谱表,根据各截面节点位置处标量值大小,通过插值得到对应的颜色值,将颜色值以填充画刷的颜色体现在截面纹理上可以实现截面标量场的显示。

4 多截面流场模拟及工程应用

为便于分析比较,在同一场景中同时绘制若干个水平和垂直截面,每一个截面可以有不同的截面填充设置和不同颜色的示踪粒子,如此可对局部三维流场进行不同方向、不同深度的比较,更容易认识三维流场特性。文中选择“长江、沱江汇合口三维水流特性研究”项目作为验证模拟效果的工程实例。

江河主流和支流汇合区域水流称为汇合口,由于两股水流的汇流比不同,相互顶托作用有强有弱,携带泥沙含量不同,使得汇合口区域水流三维特性十分明显,更使得该区域的泥沙冲淤变化复杂。长期以来对其三维水流结构研究较少、认识不足,因此研究人士汇合口区域的水流三维特性十分必要。三维计算关注的重点是沱江和长江汇合口区域三维水流结构,为泥沙冲淤理论分析提供依据。从水平、垂直截面流场分析区域三维水流特征。

图3为不同高程值为215 m、222 m、230 m的3个水平截面流场,图中白色代表最上一层截面流场,黑色代表最下一层截面流场,灰色代表中间层截面流场。可以看出,受水流流动惯性力及河道地形共同影响,底层截面流场比表层截面流场偏转早、偏转角度大,可见弯道水流表层和底层水平流速大小不等、流向存在明显差异。

图4以多截面显示方式给出了沿程若干个垂直横截面的投影流场。截面流场由两侧指向汇流交界面,即所谓“剪切层”,汇流交界面处有明显的垂向流速,流速方向向下,越到深槽,垂直向下流速分量值越大;在汇合口上游,垂向存在两个漩涡流,即靠近主流侧的逆时针漩涡流和靠近支流一侧顺时针漩涡流,到水流恢复区截面流场只出现垂向逆时针漩涡流。

通过2种截面流场对比分析,汇合区流场表现出明显的三维特性:汇合区存在横向流速分量,横向流方向由两岸指向汇流交界线;汇合区深槽和左侧浅滩区域水流垂向运动特点十分明显,垂直流速方向在回流交界线向下,在左岸附近向上,形成左岸附近水体的翻滚现象;深槽内水体在沿江主流和垂向流动共同作用下呈螺旋前进态势;汇合区右侧浅滩水流总体变化平缓,垂向流动不明显。

5 结论

通过对适应于复杂地形及边界条件下的水平及垂直截面获取算法的研究,找到了高效的、适应性强的截面生成算法并将截面绘制于三维场景中;在此基础上,通过合理的方式在截面上布设示踪粒子,并利用垂直投影方法在截面上绘制投影流场;同时对位于场景中的多个截面进行流场模拟,可方便地比较局部流场、分析流场的三维特性,比起原有截面流场模拟方法更为直观、实用。标量场可作为材质颜色绘制在截面上,实现截面标量场的模拟。

[1]孔令胜,南敬实,荀显超.平面三维显示技术的研究现状[J].中国光学与应用光学,2009(2):112-118.KONG L S,NAN J S,XUN X C.Research status quo of flat 3-D display technology[J].Chinese Journal of Optics and Applied Optics,2009(2):112-118.

[2]辛文杰,陈志昌,罗小峰.河口海岸数值模拟可视化系统[C]//中国海洋工程学会.第十二届中国海岸工程学术讨论会论文集.北京:海洋出版社,2005.

[3]陈立华,梅亚东,王现勋,等.基于 OpenGL 三维河网地形与数据场的可视化[J].武汉大学学报:工学版,2007,40(3):34-37.CHEN L H,MEI Y D,WANG X X,et al.Visualization of 3D river network terrain and data field based on OpenGL[J].Engineering Journal of Wuhan University,2007,40(3):34-37.

[4]康苏海.利用 GDI+实现二维动态流场实时模拟[J].水道港口,2009,30(6):390-393.KANG S H.Technology of real time animation on 2D flow with GDI+[J].Journal of Waterway and Harbor,2009,30(6):390-393.

[5]KANG S H,JIN S.Application of Video Anaglyph Maker for 3-D Flow Simulation[J].Journal of Hydrodynamics,2010(2):289-294.

[6]杨珺,王继成,刘然.立体图像对的生成[J].计算机应用,2007,27(9):2 106-2 109.YANG J,WANG J C,LIU R.Stereo pairs creation[J].Journal of Computer Applications,2007,27(9):2 106-2 109.

[7]Adam Nathan.WPF揭秘[M].北京:人民邮电出版社,2008.

[8]黎华,肖伟,黄海峰,等.三维真实感地形生成的关键技术研究[J].测绘科学,2006,31(4):57-60.LI H,XIAO W,HUANG H F,et al.Study on the key technology of generation of 3D realistic terrain[J].Science of Surveying and Mapping,2006,31(4):57-60.

[9]赖仪灵.WPF 全景体验[J].程序员,2007(3):98-101.LAI Y L.WPF panoramic experience[J].Programmer,2007(3):98-101.

猜你喜欢

交点插值流场
大型空冷汽轮发电机转子三维流场计算
阅读理解
基于Sinc插值与相关谱的纵横波速度比扫描方法
转杯纺排杂区流场与排杂性能
基于HYCOM的斯里兰卡南部海域温、盐、流场统计分析
借助函数图像讨论含参数方程解的情况
试析高中数学中椭圆与双曲线交点的问题
一种改进FFT多谱线插值谐波分析方法
基于四项最低旁瓣Nuttall窗的插值FFT谐波分析
基于瞬态流场计算的滑动轴承静平衡位置求解