基于OpenGL的远海岛礁海浪模拟

2021-02-14 06:23王玉秀
电视技术 2021年12期
关键词:环岛远海岛礁

王玉秀,黎 英

(昆明理工大学 信息工程与自动化学院,云南 昆明 650504)

0 引 言

随着各国学者对海洋领域的不断探索研究,海浪模拟依托于海浪谱的海浪模拟技术发展迅速,在流体力学、波浪学、计算机图像学、虚拟现实及军事行动等诸多领域都发挥了重要的作用。目前,近岛礁海浪研究方法主要有三种,即物理模型、现场海洋观测及数值模型。2002年,李孟国[1]根据线性波动的叠加原理和波浪方向谱理论,推导出了非缓坡非均匀流场中考虑非线性弥散影响和底摩擦作用的多向不规则波传播的折射绕射方程。2013年,STEPHEN G[2]通过实测Moorea北岸的陡峭珊瑚前礁和潟湖内的波浪、增水、波生流,发现研究测量结果与线性波理论吻合良好。2020年,王红川[3]等利用近岸波浪传播变形的抛物型缓坡方程和波能流平衡方程,推导出了适用于斜坡上波浪破碎的数值模拟方法,该模型可以较好地模拟斜坡地形的波浪传播波高变化情况。尽管近几年国内外学者[4-9]对海浪数值模拟进行了大量的研究,但是由于远海岛礁的特殊性以及海浪的高度随机性,很难用一种精确的模型对其进行描述。近年来,计算机仿真技术被广泛应用于近海海浪的仿真模拟,OpenGL因其开放性和高效性被应用于多种仿真建模场景中,能呈现出较好的模拟效果[10-14]。在模拟时往往直接采用近岸模拟的方法进行近似模拟,忽视了远海岛礁自身的特殊性。远海岛礁距离海岸较远,地形构造特殊,较开阔海域具有更加复杂的变化情况。本文将就数值模型展开对远海岛礁海浪的研究,针对经典P-M海浪谱无法适应复杂海浪情况的问题,对其添加岛礁因子进行海浪修正,并利用Gerstner波进行环岛礁海浪模拟,兼顾了远海与岛礁两者的特性。

1 海浪模型介绍

1.1 P-M海浪谱

P-M模型的频率分布公式为:

海浪的生成因素较为复杂,其传播方向同时受到多种力的共同影响,并非与风的方向完全一致,因此模拟过程要充分考虑海浪生成的多种影响因素。对于波浪传播方向的角度分布而言,可以利用Mitsuyasu公式进行计算,从原来的一维谱函数变成二维谱函数,完成对波幅的计算。

Mitsuyasu公式给出了频率f、相对于风的角度θ的波的能量:

波幅的计算依赖于色散关系和傅里叶变换。色散关系通常指波传播过程的频率依赖现象,色散关系公式为:

经过傅里叶逆变换即得计算波幅的公式为:

海浪的形态并不是规则的,常用的参数曲线无法完成这一表示过程。故利用(x,y,z)坐标值来进行图像绘制。对x值和y值进行预设,将z值作为波幅值和能量分散方向的正弦值之积,对海浪高度进行求解。

1.2 Gerstner波

基于Gerstner波的海浪建模最早由FOURNIER和REEVES[15]引入计算机图形学,其计算量不大。Gerstner波属于有限振幅波理论,满足Lagrange方程[16],模拟波形较真实,被广泛应用于水波模拟,其基础参数方程如下:

式中:r为波幅,k为波数,w为角频率。该方程考虑时刻t时波浪经过的情况。

2 海浪算法改进及海面设计

2.1 岛礁因子

经典的Pierson-Moskowitz模型代表了充分生长的海浪谱,这一点与本次研究的远海波浪部分非常契合,因此在远海部分选用P-M海浪谱来对海面进行模拟,但当波浪从远海传播至岛礁附近,经过礁坪前地形剧烈变化地带时波高增大后迅速减小[17]。P-M海浪谱仅与海面上方的风速有关,当海浪受到较大的外力时便不再适用,使得该海浪谱在复杂环境的情况下就会失去其优势。为了弥补这一缺陷,结合本次研究的远海岛礁环境,提出岛礁因子这一控制要素,对近岛礁海浪的无序变化进行简化表述。岛礁因子的算法流程如图1所示。

图1 岛礁因子算法流程图

岛礁因子通过控制海浪的波幅进而控制海浪的形状,实现相应的模拟效果。对于远海海域,岛礁因子不会对其产生影响,只有在达到近岛礁这一触发条件时,岛礁因子才会发挥其作用。根据图1的算法流程,在此给出岛礁因子的公式形式:

式中:位置参数Lt为该点的(x,y)的坐标值平方和,比例因子q为位置参数length和岛礁半径平方的比值,lers为岛礁半径平方。

得到岛礁因子la之后,结合已经得到的海浪幅值公式给出添加岛礁因子之后的幅值公式:

为了验证岛礁因子是否可以有效地对近岛礁海浪模拟进行优化,进行模拟仿真实验。为了实现动态起伏的海面,采用网格绘制的方法,通过对每一个点的高度值进行计算,得到高低起伏变化的海面。网格上的每个点的高度随着时间的变化而变化。为了对远海岛礁进行较为完整的显示,设置整个模拟海面的规格为256×256个海浪网格单元。首先利用坐标函数对各坐标点进行设置,此时每个坐标点都将获得由(x,y,z)3个参数构成的坐标值,同时对海面的起始高度、岛礁高度以及岛礁的半径等设置参数进行表示。其次,获得模拟时该点的岛礁高度,设定海岸的高度预设值。当岛礁坐标小于预设值,则表示未达到海岸线,模拟继续按照远海海浪谱进行;如果岛礁的高度大于预设值则表示海浪到达海岸处,在此处发生海浪高度的改变。获得需要处理的岛礁坐标之后,求解此点距离岛礁中心的距离,海浪在拍击海岸之后能量逐渐消散,根据距离的不同海浪高度也不尽相同。加入了岛礁因子后,采用遍历的算法对整个岛礁海浪进行计算,对坐标点进行筛选后进行相应的数值计算。遍历算法本身较为简洁,在部分情况下时间复杂度较高,但在本次模拟仿真中实现了较好的模拟效果,保证了实时性。

通过模拟仿真实验进行细节对比。图2给出的是原P-M海浪谱在岛礁地形下的海面情况,图3给出的是加入岛礁因子改进后的海面模拟效果。可以明显地看出,改进之后的海浪形状更接近实际情况,说明岛礁因子的加入弥补了原PM海浪谱无法模拟复杂海况的缺陷。

图2 原P-M海浪谱模拟的海浪

图3 基于改进后P-M海浪谱模拟的海浪

2.2 海面设计

2.2.1 环岛海浪

海浪在由远及近的传播过程中会遇到岛礁等障碍物,水深落差致使海浪发生折射、绕射、反射以及海浪破碎等现象,特别是由于背浪侧绕射现象的存在,使得背浪侧会产生相应的近岸浪。环岛海浪的形成原理如图4所示。

图4 环岛浪形成原理

在对环岛海浪进行模拟时,仅采用Gerstner波的竖直方向分量进行模拟。由于环岛海浪只会出现在近岛礁区域,所以此处根据岛礁因子为环岛浪设定触发条件。当岛礁因子为1时,表示选取的坐标点不属于研究范围内的岛礁地形,此时的环岛波浪振幅趋于0,按照远海海浪进行模拟,使环岛海浪失效,以此控制环岛海浪的模拟范围,同时得到环岛海浪最终的参数方程如下:

叠加环岛海浪后的海浪细节如图5所示。可以看出,添加环岛浪后,模拟出的海浪更接近于实际近岛礁海浪情况。

图5 添加环岛海浪后的岛礁海浪

2.2.2 整体海面构建

依据波的叠加原理,可以将复杂的波分解为一系列的简谐波组合。依据这一原理,将改进后的P-M海浪谱同设计的环岛海浪进行波的线性叠加,最终得到整个海面的海浪模型。之后利用OpenGL和Microsoft Visual Studio(VS)进行仿真模拟实验,海面场景的实现大致分为以下几个步骤。

步骤1:设置开发环境。在VS上创建控制台程序,然后链接OpenGL库文件。

步骤2:建立程序框架。首先需要建立OpenGL和Windows窗口两者之间的连接;其次设置所需的像素格式,以求达到最佳的效果;最后设置窗口的图形变换以及窗口函数的销毁。

步骤3:海面网格的绘制。为了实现动态起伏的海面,采用网格绘制的方法,利用OpenGL中的绘图函数绘制网格的顶点、直线以及网格多边形。然后依据改进后的算法函数模型对每一个点的高度值进行计算,网格上的每个点的高度随着时间变化而变化,从而得到高低起伏变化的动态海面。

步骤4:光照与渲染。通过设置环境光、反射光以及镜面指数等对海面和岛礁的材质进行设置,启用光源之后,整个场景呈现出较好的质感。同时利用glTexImage2D函数和glTexCoord2f函数进行渲染,纹理源来自真实照片,然后对各个网格进行映射,此种纹理映射方法可以使仿真结果具有较好的真实感,并且可以提高整个系统的运算速率。a、b两个不同时刻的海浪效果如图6、图7所示。

图6 a时刻远海岛礁海浪网格图

图7 b时刻远海岛礁海浪网格图

3 仿真实验与结果分析

本次实验以远海岛礁海浪为研究对象,实验的硬件平台为AMD Ryzen 5 3600X 6-Core Processor 3.80 GHz CPU、NVIDIA GeForce RTX 2060显卡,开发环境为Visual Studio 2017和OpenGL,运行环境为64位Windows 10系统。利用计算机技术对波浪进行模拟,为了绘制出仿真精度、逼真度较好的远海效果,波面网格选用256×256的规格。用C++语言进行程序编写,C++语言灵活、功能强大,运行效率是其最大的优势。经过测试,帧率稳定地保持在15 f·s-1以上,能够较好地实现所需的仿真效果。渲染之后的海浪效果如图8所示,可以看出,模拟实验的结果很好地兼顾了远海海浪以及环岛礁海浪的特性,实现了完整的远海岛礁海浪模拟。

图8 远海岛礁海浪模拟图

4 结 语

本文针对P-M海浪谱模型无法模拟近岛礁海浪的局限性,通过构建岛礁因子来对其进行改进。之后分析了环岛海浪的成因,并以Gerstner波为原型对其进行设计,同时将岛礁因子设为环岛海浪的触发因子。最后依据波的线性叠加原理完成整个远海岛礁海浪场景的设计,利用OpenGL和VS完成了海面的3D模拟效果,整个海面具有较强的真实性。由于海浪的高度随机性,本文未考虑海浪与岛礁的碰撞检测问题,在后续的研究工作中,将就这一问题展开着重研究。

猜你喜欢
环岛远海岛礁
行走环岛高速,感受开放的魅力
体系作战条件下岛礁作战中辅助决策问题研究
基于OODA过程的岛礁防空CGF模型
近35年来热带风暴对我国南海岛礁的影响分析
北京京密路(京承高速公路-开放环岛)工程总体设计
骑车环岛11日
岛礁区攻防作战的历史演变及时代特征