一種基于隨機粒子的渦旋流場動態(tài)可視化方法
【專利摘要】本發(fā)明公開了一種基于隨機粒子的渦旋流場動態(tài)可視化方法,通過在流場隨機生成粒子,并賦予粒子生命長度,讓粒子隨著流場速度矢量的變化而不斷運動形成移動軌跡,表現(xiàn)渦旋閉合流場的流線特征。本發(fā)明算法簡單、計算速度快,視覺效果生動,適用于渦旋等其他流場現(xiàn)象的動態(tài)可視化。
【專利說明】
一種基于隨機粒子的渦旋流場動態(tài)可視化方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及一種基于隨機粒子的渦旋流場動態(tài)可視化方法,屬于海洋數(shù)據(jù)可視化領(lǐng)域。
【背景技術(shù)】
[0002]流場是海洋研究中重要的物理場,如大氣中的風(fēng),海洋中的流等都是眾多海洋動態(tài)現(xiàn)象(渦旋、潮汐、浪、鋒面等)的重要驅(qū)動力。流場數(shù)據(jù)通常采用向量場的數(shù)據(jù)結(jié)構(gòu),記錄每個采樣點上水平U(瑋向)和垂直V(經(jīng)向)方向上的速率。由于流場數(shù)據(jù)本身并不能直觀地反映流場每個位置上的速度大小和方向,因此如何有效生動地對流場數(shù)據(jù)進行可視化,表現(xiàn)中尺度渦在流場上的閉合環(huán)流特征,對于認識和研究渦旋的演變演化過程具有重要的研究意義。
[0003]目前,流場矢量數(shù)據(jù)可視化的方法主要有四種(陳為等,2013):1)標(biāo)記法,通常采用帶箭頭的線段來表示速度的方向和大小;2)積分曲線法,采用各種積分曲線對流場中的跡線、流線和脈線進行可視化;3)紋理法,采用點噪聲法(V a n W i j k,19 91)或線積分卷積(Cabral,1993)生成流場的紋理特征;4)拓撲法,通過提取和標(biāo)繪幾何或拓撲特征,如臨界點、分界線和拓撲區(qū)域,來視覺化流場數(shù)據(jù)。
[0004]現(xiàn)有的這些方法,由簡到繁,從不同的生動程度表現(xiàn)了流場矢量數(shù)據(jù),但卻難以讓用戶直觀地感受到流場本身的運動變化,特別是渦旋內(nèi)部流場閉合環(huán)流的特征。為此,本發(fā)明提出一種基于隨機粒子的渦旋流場動態(tài)可視化方法,通過在空間上隨機生成有限數(shù)量的粒子,讓粒子隨著流場的空間變化而不斷運動,來模擬表現(xiàn)渦旋閉合流場的動態(tài)特征。
【發(fā)明內(nèi)容】
[0005]本發(fā)明解決的技術(shù)問題:提供一種基于隨機粒子的渦旋流場動態(tài)可視化方法,該方法通過在空間上隨機產(chǎn)生有限數(shù)量的虛擬粒子,讓粒子跟隨流場的空間變化而不斷的運動,形成逐漸消失的尾跡效果,來反映流場矢量數(shù)據(jù)的動態(tài)特征,特別是渦旋內(nèi)部閉合流場的特征,本發(fā)明簡單、計算速度快,視覺效果生動,適用于渦旋等其他流場現(xiàn)象的動態(tài)可視化。
[0006]本發(fā)明的技術(shù)方案:一種基于隨機粒子的渦旋流場動態(tài)可視化方法包括如下步驟:
[0007]步驟1、根據(jù)實際用戶需求,在空間上生成N*N的規(guī)則格網(wǎng),遍歷每個格網(wǎng);N*N的規(guī)則格網(wǎng),可以取100*100;
[0008]步驟2、在格網(wǎng)內(nèi)隨機生成一個粒子,并賦予粒子指定或隨機的壽命值;
[0009]步驟3、根據(jù)粒子所在的空間位置(x,y),搜索流場矢量數(shù)據(jù)中最鄰近的四個采樣點,通過雙線性插值內(nèi)插出粒子的U、V速率值;
[0010]步驟4、在定時執(zhí)行函數(shù)(如JavaScript的setTimeout()函數(shù))中,設(shè)定幀率(秒/幀),并依序執(zhí)行以下函數(shù):[ΟΟ?1 ] ?漸隱(fadeout)函數(shù),對之前所繪制的粒子軌跡作微透明化處理;
[0012]?演進(evolve)函數(shù),若粒子已到自身的壽命長度,則重新在粒子生成的格網(wǎng)內(nèi)隨機產(chǎn)生一個新的粒子;否則,根據(jù)幀率R、U、V計算粒子下一個時刻的空間位置,并根據(jù)新的空間位置按步驟3更新粒子的U、V速度值,最后粒子年齡值加一,更新粒子速度值的計算如下:
[0013]xt = x+U*R
[0014]yt = y+V*R
[0015]其中,(xt,yt)為下個時刻粒子的位置坐標(biāo),(x,y)為粒子當(dāng)前位置的坐標(biāo),U和V分別是當(dāng)前粒子所在流場位置的水平和垂直速率值,R為幀率;
[00? 0] 籲繪制(draw)函數(shù),繪制從當(dāng)前位置到下一時刻位置的直線,更新粒子的空間位置。
[0017]所述步驟2中賦予粒子指定或隨機的壽命值的計算如下,
[0018]x = xo+size*random();
[0019]y = yo+size*random();
[0020]age =max_age氺random();
[0021]其中,(x,y)為粒子生成的隨機位置,(XQ,yQ)為格網(wǎng)的起始點位置,size為格網(wǎng)的長度大小,age為粒子的隨機壽命值,max_age為用戶設(shè)定的粒子最大生命值,randomO為產(chǎn)生[0,1]區(qū)間任意值的隨機函數(shù)。
[0022]所述步驟3中通過雙線性插值內(nèi)插出粒子的U、V速率值如下,
[0023]dy = Po0.y-P1.y
[0024]dx = Po1.x-Po0.x
[0025 ] vo = P1.z* (Po0.y-y) / dy+Po0.z* (y - P1.y) /dy
[0026]Vi = Pn.z*( Po1.y-y) / dy+Poi.z* (y_Pii.y) /dy
[0027]V = vo* (Po1.x-x)/dx+vl*(x-Po0.x)/dx
[0028]其中,PQQ,P1,Poi,Pu為最鄰近的四個采樣點,每個采樣點均含有(x,y,z)三個屬性值。Po0.X,Po0.y即采樣點Pqq的X,y坐標(biāo)值,Pqq.z即采樣點Pqq的U或V速率值。插值點的坐標(biāo)由X,y單獨表示。dx,dy分別表示四個采樣點在X,y方向上的間隔距離。vo表示Pqq和P1在y軸上的速率線性插值分量,Vi表不Poi和Pii在y軸上的速率線性插值分量,V表不vo和Vi在X軸上的速率線性插值。
[0029]所述步驟4中定時執(zhí)行函數(shù)中依序執(zhí)行漸隱(fadeout)函數(shù)對粒子過往軌跡消隱處理,演進(evolve)函數(shù)更新粒子位置及生命屬性,和繪制(draw)函數(shù)更新粒子移動軌跡。
[0030]本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于:
[0031](I)本發(fā)明利用隨機生成的粒子模擬其在流場數(shù)據(jù)中的流動,從而反映流場的速度分布,與傳統(tǒng)方法相比,更好地體現(xiàn)了流場的運動性特征,視覺效果更佳。
[0032](2)本發(fā)明通過在空間上隨機產(chǎn)生有限數(shù)量的虛擬粒子,讓粒子跟隨流場的空間變化而不斷的運動,形成逐漸消失的尾跡效果,來反映流場矢量數(shù)據(jù)的動態(tài)特征,特別是渦旋內(nèi)部閉合流場的特征,,本發(fā)明簡單、計算速度快,視覺效果生動,適用于渦旋等其他流場現(xiàn)象的動態(tài)可視化。
【附圖說明】
[0033]圖1為本發(fā)明的主流程圖;
[0034]圖2為雙線性內(nèi)插方法示意圖。
【具體實施方式】
[0035]如圖1所示,本發(fā)明的具體實施步驟如下:
[0036]步驟1、根據(jù)實際用戶需求,在空間上生成N*N的規(guī)則格網(wǎng),遍歷每個格網(wǎng)。
[0037]步驟2、在格網(wǎng)內(nèi)隨機生成一個粒子,并賦予粒子指定或隨機的壽命值,計算如下,
[0038]x = xo+size*random();
[0039]y = yo+size*random();
[0040]age =max_age氺random();
[0041]其中,(x,y)為粒子生成的隨機位置,(XQ,yQ)為格網(wǎng)的起始點位置,size為格網(wǎng)的長度大小,age為粒子的隨機壽命值,max_age為用戶設(shè)定的粒子最大生命值,randomO為產(chǎn)生[0,1]區(qū)間任意值的隨機函數(shù)。
[0042]步驟3、根據(jù)粒子所在的空間位置(x,y),搜索流場矢量數(shù)據(jù)中最鄰近的四個采樣點Poo、Po1、P1Q、Pu,如圖2所示,通過雙線性插值內(nèi)插出粒子的水平速度分量U和垂直速度分量V,計算如下,
[0043]dy = Po0.y-P1.y
[0044]dx = Po1.x-Po0.x
[0045 ] zo = P1.z* (Po0.y-y) / dy+Po0.z* (y - P1.y) /dy
[0046] Zi = Pn.z*(Po1.y-y) / dy+Poi.z* (y_Pii.y) /dy[0047 ] z = zo* (Poi.χ-χ) / dx+zi* (x - Po0.x) /dx
[0048]其中,PQQ,P1,Poi,Pu為最鄰近的四個采樣點,每個采樣點均含有(x,y,z)三個屬性值。Po0.X,Po0.y即采樣點Pqq的X,y坐標(biāo)值,Pqq.z即采樣點Pqq的U或V速率值。插值點的坐標(biāo)由X,y單獨表示。dx,dy分別表示四個采樣點在X,y方向上的間隔距離。zo表示Pqq和P1在y軸上的速率線性插值分量,Zi表不Poi和Pii在y軸上的速率線性插值分量,z表不zo和Zi在X軸上的速率線性插值。
[0049]步驟4、在定時執(zhí)行函數(shù)(如JavaScript的setTimeout()函數(shù))中,設(shè)定幀率(秒/幀)R,并依序執(zhí)行以下函數(shù):
[0050]?漸隱(fadeout)函數(shù),對之前所繪制的粒子軌跡做微透明化處理,以HTML實現(xiàn)為例,粒子軌跡均繪制在Canvas對象上,在更新粒子軌跡(即粒子新的位置)之前,在Canvas上放置相同空間范圍的白色填充的透明化矩形,透明度可設(shè)為90%,使之前繪制的粒子軌跡顏色減退,隨著透明化矩形的不停疊放,此前繪制的粒子軌跡將隨著透明度的降低而逐漸消隱至無;
[0051]?演進(evolve)函數(shù),若粒子已到自身的壽命長度,則采用步驟2的方法重新在粒子生成的格網(wǎng)內(nèi)隨機產(chǎn)生一個新的粒子;否則,根據(jù)幀率R、U、V計算粒子下一個時刻的空間位置,并根據(jù)新的空間位置按步驟3更新粒子的U、V速度值,最后粒子年齡值加一,更新粒子速度值的計算如下:
[0052]xt = x+U*R
[0053]yt = y+V*R
[0054]其中,(xt,yt)為下個時刻粒子的位置坐標(biāo),(x,y)為粒子當(dāng)前位置的坐標(biāo),U和V分別是當(dāng)前粒子所在流場位置的水平和垂直速率值;
[0055]?繪制(draw)函數(shù),繪制從當(dāng)前位置到下一時刻位置的直線,更新粒子的空間位置。
[0056]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本鄰域的技術(shù)人員來說,本發(fā)明可以更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
【主權(quán)項】
1.一種基于隨機粒子的渦旋流場動態(tài)可視化方法,其特征在于步驟如下: 步驟1、根據(jù)實際用戶需求,在空間上生成N*N的規(guī)則格網(wǎng),遍歷每個格網(wǎng); 步驟2、在格網(wǎng)內(nèi)隨機生成一個粒子,并賦予粒子指定或隨機的壽命值; 步驟3、根據(jù)粒子所在的空間位置(x,y),搜索流場矢量數(shù)據(jù)中最鄰近的四個采樣點,通過雙線性插值內(nèi)插出粒子的U、V速率值; 步驟4、在定時執(zhí)行函數(shù)中,設(shè)定幀率,并依序執(zhí)行以下函數(shù): ?漸隱(f adeout)函數(shù),對所繪制的粒子軌跡作微透明化處理; ?演進(evolve)函數(shù),若粒子已到自身的壽命長度,則重新在粒子生成的格網(wǎng)內(nèi)隨機產(chǎn)生一個新的粒子;否則,根據(jù)幀率、U、V計算粒子下一個時刻的空間位置,并根據(jù)新的空間位置更新粒子的U、V速度值,并且年齡值加一; ?繪制(draw)函數(shù),繪制從當(dāng)前位置到下一時刻位置的直線,更新粒子的空間位置。2.根據(jù)權(quán)利要求1所述的基于隨機粒子的渦旋流場動態(tài)可視化方法,其特征在于:所述步驟2中賦予粒子指定或隨機的壽命值的計算如下,x = xo+size*random();y = yo+size*random();age=max_age*random(); 其中,(x,y)為粒子生成的隨機位置,(XQ,yo)為格網(wǎng)的起始點位置,Size為格網(wǎng)的長度大小,age為粒子的隨機壽命值,max_age為用戶設(shè)定的粒子最大生命值,random()為產(chǎn)生[0,1]區(qū)間任意值的隨機函數(shù)。3.根據(jù)權(quán)利要求1所述的基于隨機粒子的渦旋流場動態(tài)可視化方法,其特征在于:所述步驟3中通過雙線性插值內(nèi)插出粒子的U、V速率值如下,dy = Po0.y-P1.ydx = Po1.x_Po0.Xvo = P1.z* (Po0.y-y)/dy+Po0.z*(y-P1.y)/dyVi = Pn.z*(Po1.y-y)/dy+Po1.z*(y-Pn.y)/dyv = vo*(Po1.x-x)/dx+vl*(x-Po0.x)/dx 其中,Pqq,P1Q,Pq1,Pu為最鄰近的四個采樣點,每個采樣點均含有(X,y,z)三個屬性值;Po0.X, Po0.y即采樣點Pqq的X,y坐標(biāo)值,Pqq.z即采樣點Pqq的U或V速率值;插值點的坐標(biāo)由x,y單獨表示;dx,dy分別表示四個采樣點在X,y方向上的間隔距離;νο表示Pqq和P1在y軸上的速率線性插值分量,Vi表示Poi和Pu在y軸上的速率線性插值分量,V表示VQ和Vl在X軸上的速率線性插值。4.根據(jù)權(quán)利要求1所述的基于隨機粒子的渦旋流場動態(tài)可視化方法,其特征在于:所述步驟4中定時執(zhí)行函數(shù)中依序執(zhí)行漸隱(fadeout)函數(shù)對粒子過往軌跡消隱處理,演進(evolve)函數(shù)更新粒子位置及生命屬性,和繪制(draw)函數(shù)更新粒子移動軌跡。5.根據(jù)權(quán)利要求1所述的基于隨機粒子的渦旋流場動態(tài)可視化方法,其特征在于:所述步驟I中N*N的規(guī)則格網(wǎng)可以取100*100。
【文檔編號】G06F17/50GK105844036SQ201610191465
【公開日】2016年8月10日
【申請日】2016年3月30日
【發(fā)明人】易嘉偉, 杜云艷, 周成虎
【申請人】中國科學(xué)院地理科學(xué)與資源研究所