• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于OpenGL的遠(yuǎn)海島礁海浪模擬

      2021-02-14 06:23:44王玉秀
      電視技術(shù) 2021年12期
      關(guān)鍵詞:環(huán)島遠(yuǎn)海島礁

      王玉秀,黎 英

      (昆明理工大學(xué) 信息工程與自動化學(xué)院,云南 昆明 650504)

      0 引 言

      隨著各國學(xué)者對海洋領(lǐng)域的不斷探索研究,海浪模擬依托于海浪譜的海浪模擬技術(shù)發(fā)展迅速,在流體力學(xué)、波浪學(xué)、計(jì)算機(jī)圖像學(xué)、虛擬現(xiàn)實(shí)及軍事行動等諸多領(lǐng)域都發(fā)揮了重要的作用。目前,近島礁海浪研究方法主要有三種,即物理模型、現(xiàn)場海洋觀測及數(shù)值模型。2002年,李孟國[1]根據(jù)線性波動的疊加原理和波浪方向譜理論,推導(dǎo)出了非緩坡非均勻流場中考慮非線性彌散影響和底摩擦作用的多向不規(guī)則波傳播的折射繞射方程。2013年,STEPHEN G[2]通過實(shí)測Moorea北岸的陡峭珊瑚前礁和潟湖內(nèi)的波浪、增水、波生流,發(fā)現(xiàn)研究測量結(jié)果與線性波理論吻合良好。2020年,王紅川[3]等利用近岸波浪傳播變形的拋物型緩坡方程和波能流平衡方程,推導(dǎo)出了適用于斜坡上波浪破碎的數(shù)值模擬方法,該模型可以較好地模擬斜坡地形的波浪傳播波高變化情況。盡管近幾年國內(nèi)外學(xué)者[4-9]對海浪數(shù)值模擬進(jìn)行了大量的研究,但是由于遠(yuǎn)海島礁的特殊性以及海浪的高度隨機(jī)性,很難用一種精確的模型對其進(jìn)行描述。近年來,計(jì)算機(jī)仿真技術(shù)被廣泛應(yīng)用于近海海浪的仿真模擬,OpenGL因其開放性和高效性被應(yīng)用于多種仿真建模場景中,能呈現(xiàn)出較好的模擬效果[10-14]。在模擬時(shí)往往直接采用近岸模擬的方法進(jìn)行近似模擬,忽視了遠(yuǎn)海島礁自身的特殊性。遠(yuǎn)海島礁距離海岸較遠(yuǎn),地形構(gòu)造特殊,較開闊海域具有更加復(fù)雜的變化情況。本文將就數(shù)值模型展開對遠(yuǎn)海島礁海浪的研究,針對經(jīng)典P-M海浪譜無法適應(yīng)復(fù)雜海浪情況的問題,對其添加島礁因子進(jìn)行海浪修正,并利用Gerstner波進(jìn)行環(huán)島礁海浪模擬,兼顧了遠(yuǎn)海與島礁兩者的特性。

      1 海浪模型介紹

      1.1 P-M海浪譜

      P-M模型的頻率分布公式為:

      海浪的生成因素較為復(fù)雜,其傳播方向同時(shí)受到多種力的共同影響,并非與風(fēng)的方向完全一致,因此模擬過程要充分考慮海浪生成的多種影響因素。對于波浪傳播方向的角度分布而言,可以利用Mitsuyasu公式進(jìn)行計(jì)算,從原來的一維譜函數(shù)變成二維譜函數(shù),完成對波幅的計(jì)算。

      Mitsuyasu公式給出了頻率f、相對于風(fēng)的角度θ的波的能量:

      波幅的計(jì)算依賴于色散關(guān)系和傅里葉變換。色散關(guān)系通常指波傳播過程的頻率依賴現(xiàn)象,色散關(guān)系公式為:

      經(jīng)過傅里葉逆變換即得計(jì)算波幅的公式為:

      海浪的形態(tài)并不是規(guī)則的,常用的參數(shù)曲線無法完成這一表示過程。故利用(x,y,z)坐標(biāo)值來進(jìn)行圖像繪制。對x值和y值進(jìn)行預(yù)設(shè),將z值作為波幅值和能量分散方向的正弦值之積,對海浪高度進(jìn)行求解。

      1.2 Gerstner波

      基于Gerstner波的海浪建模最早由FOURNIER和REEVES[15]引入計(jì)算機(jī)圖形學(xué),其計(jì)算量不大。Gerstner波屬于有限振幅波理論,滿足Lagrange方程[16],模擬波形較真實(shí),被廣泛應(yīng)用于水波模擬,其基礎(chǔ)參數(shù)方程如下:

      式中:r為波幅,k為波數(shù),w為角頻率。該方程考慮時(shí)刻t時(shí)波浪經(jīng)過的情況。

      2 海浪算法改進(jìn)及海面設(shè)計(jì)

      2.1 島礁因子

      經(jīng)典的Pierson-Moskowitz模型代表了充分生長的海浪譜,這一點(diǎn)與本次研究的遠(yuǎn)海波浪部分非常契合,因此在遠(yuǎn)海部分選用P-M海浪譜來對海面進(jìn)行模擬,但當(dāng)波浪從遠(yuǎn)海傳播至島礁附近,經(jīng)過礁坪前地形劇烈變化地帶時(shí)波高增大后迅速減小[17]。P-M海浪譜僅與海面上方的風(fēng)速有關(guān),當(dāng)海浪受到較大的外力時(shí)便不再適用,使得該海浪譜在復(fù)雜環(huán)境的情況下就會失去其優(yōu)勢。為了彌補(bǔ)這一缺陷,結(jié)合本次研究的遠(yuǎn)海島礁環(huán)境,提出島礁因子這一控制要素,對近島礁海浪的無序變化進(jìn)行簡化表述。島礁因子的算法流程如圖1所示。

      圖1 島礁因子算法流程圖

      島礁因子通過控制海浪的波幅進(jìn)而控制海浪的形狀,實(shí)現(xiàn)相應(yīng)的模擬效果。對于遠(yuǎn)海海域,島礁因子不會對其產(chǎn)生影響,只有在達(dá)到近島礁這一觸發(fā)條件時(shí),島礁因子才會發(fā)揮其作用。根據(jù)圖1的算法流程,在此給出島礁因子的公式形式:

      式中:位置參數(shù)Lt為該點(diǎn)的(x,y)的坐標(biāo)值平方和,比例因子q為位置參數(shù)length和島礁半徑平方的比值,lers為島礁半徑平方。

      得到島礁因子la之后,結(jié)合已經(jīng)得到的海浪幅值公式給出添加島礁因子之后的幅值公式:

      為了驗(yàn)證島礁因子是否可以有效地對近島礁海浪模擬進(jìn)行優(yōu)化,進(jìn)行模擬仿真實(shí)驗(yàn)。為了實(shí)現(xiàn)動態(tài)起伏的海面,采用網(wǎng)格繪制的方法,通過對每一個(gè)點(diǎn)的高度值進(jìn)行計(jì)算,得到高低起伏變化的海面。網(wǎng)格上的每個(gè)點(diǎn)的高度隨著時(shí)間的變化而變化。為了對遠(yuǎn)海島礁進(jìn)行較為完整的顯示,設(shè)置整個(gè)模擬海面的規(guī)格為256×256個(gè)海浪網(wǎng)格單元。首先利用坐標(biāo)函數(shù)對各坐標(biāo)點(diǎn)進(jìn)行設(shè)置,此時(shí)每個(gè)坐標(biāo)點(diǎn)都將獲得由(x,y,z)3個(gè)參數(shù)構(gòu)成的坐標(biāo)值,同時(shí)對海面的起始高度、島礁高度以及島礁的半徑等設(shè)置參數(shù)進(jìn)行表示。其次,獲得模擬時(shí)該點(diǎn)的島礁高度,設(shè)定海岸的高度預(yù)設(shè)值。當(dāng)島礁坐標(biāo)小于預(yù)設(shè)值,則表示未達(dá)到海岸線,模擬繼續(xù)按照遠(yuǎn)海海浪譜進(jìn)行;如果島礁的高度大于預(yù)設(shè)值則表示海浪到達(dá)海岸處,在此處發(fā)生海浪高度的改變。獲得需要處理的島礁坐標(biāo)之后,求解此點(diǎn)距離島礁中心的距離,海浪在拍擊海岸之后能量逐漸消散,根據(jù)距離的不同海浪高度也不盡相同。加入了島礁因子后,采用遍歷的算法對整個(gè)島礁海浪進(jìn)行計(jì)算,對坐標(biāo)點(diǎn)進(jìn)行篩選后進(jìn)行相應(yīng)的數(shù)值計(jì)算。遍歷算法本身較為簡潔,在部分情況下時(shí)間復(fù)雜度較高,但在本次模擬仿真中實(shí)現(xiàn)了較好的模擬效果,保證了實(shí)時(shí)性。

      通過模擬仿真實(shí)驗(yàn)進(jìn)行細(xì)節(jié)對比。圖2給出的是原P-M海浪譜在島礁地形下的海面情況,圖3給出的是加入島礁因子改進(jìn)后的海面模擬效果??梢悦黠@地看出,改進(jìn)之后的海浪形狀更接近實(shí)際情況,說明島礁因子的加入彌補(bǔ)了原PM海浪譜無法模擬復(fù)雜海況的缺陷。

      圖2 原P-M海浪譜模擬的海浪

      圖3 基于改進(jìn)后P-M海浪譜模擬的海浪

      2.2 海面設(shè)計(jì)

      2.2.1 環(huán)島海浪

      海浪在由遠(yuǎn)及近的傳播過程中會遇到島礁等障礙物,水深落差致使海浪發(fā)生折射、繞射、反射以及海浪破碎等現(xiàn)象,特別是由于背浪側(cè)繞射現(xiàn)象的存在,使得背浪側(cè)會產(chǎn)生相應(yīng)的近岸浪。環(huán)島海浪的形成原理如圖4所示。

      圖4 環(huán)島浪形成原理

      在對環(huán)島海浪進(jìn)行模擬時(shí),僅采用Gerstner波的豎直方向分量進(jìn)行模擬。由于環(huán)島海浪只會出現(xiàn)在近島礁區(qū)域,所以此處根據(jù)島礁因子為環(huán)島浪設(shè)定觸發(fā)條件。當(dāng)島礁因子為1時(shí),表示選取的坐標(biāo)點(diǎn)不屬于研究范圍內(nèi)的島礁地形,此時(shí)的環(huán)島波浪振幅趨于0,按照遠(yuǎn)海海浪進(jìn)行模擬,使環(huán)島海浪失效,以此控制環(huán)島海浪的模擬范圍,同時(shí)得到環(huán)島海浪最終的參數(shù)方程如下:

      疊加環(huán)島海浪后的海浪細(xì)節(jié)如圖5所示??梢钥闯觯砑迎h(huán)島浪后,模擬出的海浪更接近于實(shí)際近島礁海浪情況。

      圖5 添加環(huán)島海浪后的島礁海浪

      2.2.2 整體海面構(gòu)建

      依據(jù)波的疊加原理,可以將復(fù)雜的波分解為一系列的簡諧波組合。依據(jù)這一原理,將改進(jìn)后的P-M海浪譜同設(shè)計(jì)的環(huán)島海浪進(jìn)行波的線性疊加,最終得到整個(gè)海面的海浪模型。之后利用OpenGL和Microsoft Visual Studio(VS)進(jìn)行仿真模擬實(shí)驗(yàn),海面場景的實(shí)現(xiàn)大致分為以下幾個(gè)步驟。

      步驟1:設(shè)置開發(fā)環(huán)境。在VS上創(chuàng)建控制臺程序,然后鏈接OpenGL庫文件。

      步驟2:建立程序框架。首先需要建立OpenGL和Windows窗口兩者之間的連接;其次設(shè)置所需的像素格式,以求達(dá)到最佳的效果;最后設(shè)置窗口的圖形變換以及窗口函數(shù)的銷毀。

      步驟3:海面網(wǎng)格的繪制。為了實(shí)現(xiàn)動態(tài)起伏的海面,采用網(wǎng)格繪制的方法,利用OpenGL中的繪圖函數(shù)繪制網(wǎng)格的頂點(diǎn)、直線以及網(wǎng)格多邊形。然后依據(jù)改進(jìn)后的算法函數(shù)模型對每一個(gè)點(diǎn)的高度值進(jìn)行計(jì)算,網(wǎng)格上的每個(gè)點(diǎn)的高度隨著時(shí)間變化而變化,從而得到高低起伏變化的動態(tài)海面。

      步驟4:光照與渲染。通過設(shè)置環(huán)境光、反射光以及鏡面指數(shù)等對海面和島礁的材質(zhì)進(jìn)行設(shè)置,啟用光源之后,整個(gè)場景呈現(xiàn)出較好的質(zhì)感。同時(shí)利用glTexImage2D函數(shù)和glTexCoord2f函數(shù)進(jìn)行渲染,紋理源來自真實(shí)照片,然后對各個(gè)網(wǎng)格進(jìn)行映射,此種紋理映射方法可以使仿真結(jié)果具有較好的真實(shí)感,并且可以提高整個(gè)系統(tǒng)的運(yùn)算速率。a、b兩個(gè)不同時(shí)刻的海浪效果如圖6、圖7所示。

      圖6 a時(shí)刻遠(yuǎn)海島礁海浪網(wǎng)格圖

      圖7 b時(shí)刻遠(yuǎn)海島礁海浪網(wǎng)格圖

      3 仿真實(shí)驗(yàn)與結(jié)果分析

      本次實(shí)驗(yàn)以遠(yuǎn)海島礁海浪為研究對象,實(shí)驗(yàn)的硬件平臺為AMD Ryzen 5 3600X 6-Core Processor 3.80 GHz CPU、NVIDIA GeForce RTX 2060顯卡,開發(fā)環(huán)境為Visual Studio 2017和OpenGL,運(yùn)行環(huán)境為64位Windows 10系統(tǒng)。利用計(jì)算機(jī)技術(shù)對波浪進(jìn)行模擬,為了繪制出仿真精度、逼真度較好的遠(yuǎn)海效果,波面網(wǎng)格選用256×256的規(guī)格。用C++語言進(jìn)行程序編寫,C++語言靈活、功能強(qiáng)大,運(yùn)行效率是其最大的優(yōu)勢。經(jīng)過測試,幀率穩(wěn)定地保持在15 f·s-1以上,能夠較好地實(shí)現(xiàn)所需的仿真效果。渲染之后的海浪效果如圖8所示,可以看出,模擬實(shí)驗(yàn)的結(jié)果很好地兼顧了遠(yuǎn)海海浪以及環(huán)島礁海浪的特性,實(shí)現(xiàn)了完整的遠(yuǎn)海島礁海浪模擬。

      圖8 遠(yuǎn)海島礁海浪模擬圖

      4 結(jié) 語

      本文針對P-M海浪譜模型無法模擬近島礁海浪的局限性,通過構(gòu)建島礁因子來對其進(jìn)行改進(jìn)。之后分析了環(huán)島海浪的成因,并以Gerstner波為原型對其進(jìn)行設(shè)計(jì),同時(shí)將島礁因子設(shè)為環(huán)島海浪的觸發(fā)因子。最后依據(jù)波的線性疊加原理完成整個(gè)遠(yuǎn)海島礁海浪場景的設(shè)計(jì),利用OpenGL和VS完成了海面的3D模擬效果,整個(gè)海面具有較強(qiáng)的真實(shí)性。由于海浪的高度隨機(jī)性,本文未考慮海浪與島礁的碰撞檢測問題,在后續(xù)的研究工作中,將就這一問題展開著重研究。

      猜你喜歡
      環(huán)島遠(yuǎn)海島礁
      行走環(huán)島高速,感受開放的魅力
      金橋(2022年5期)2022-08-24 01:40:54
      體系作戰(zhàn)條件下島礁作戰(zhàn)中輔助決策問題研究
      基于OODA過程的島礁防空CGF模型
      淺談汽車在城市環(huán)島中轉(zhuǎn)向燈的使用
      近35年來熱帶風(fēng)暴對我國南海島礁的影響分析
      北京京密路(京承高速公路-開放環(huán)島)工程總體設(shè)計(jì)
      騎車環(huán)島11日
      島礁區(qū)攻防作戰(zhàn)的歷史演變及時(shí)代特征
      軍事歷史(2004年2期)2004-11-22 07:12:10
      余江县| 陇西县| 巴里| 嘉黎县| 沛县| 金阳县| 射阳县| 芜湖县| 手机| 斗六市| 尚志市| 嘉义市| 台南县| 安化县| 云梦县| 赣榆县| 大兴区| 闸北区| 平舆县| 潞西市| 黄大仙区| 镇原县| 青岛市| 嘉义县| 禹城市| 乌审旗| 宁阳县| 连州市| 高台县| 宣威市| 秦安县| 新田县| 高平市| 元谋县| 江口县| 桃江县| 左云县| 资兴市| 隆林| 贵港市| 湟中县|