◎姜亦宏 楊麗麗
微波輻射計(jì)風(fēng)羽圖繪制方法
◎姜亦宏 楊麗麗
本文闡述了一種風(fēng)羽圖的繪制方法,用二維彩色繪圖展示風(fēng)速、風(fēng)向等,為輻射計(jì)在氣象領(lǐng)域的應(yīng)用提供更多的產(chǎn)品展示。本文給出了該方法在VC++6.0下的實(shí)現(xiàn)方式。實(shí)驗(yàn)結(jié)果證明,該風(fēng)羽圖的繪制方法具有可操作性和實(shí)用性。
風(fēng)羽圖,是氣象領(lǐng)域表示風(fēng)向、風(fēng)速的符號(hào)圖。根據(jù)風(fēng)羽圖,可以分析糊涂區(qū)域范圍內(nèi)的風(fēng)場(chǎng)情況。
隨著微波輻射計(jì)在氣象領(lǐng)域的推廣,輻射計(jì)軟件對(duì)風(fēng)羽圖的展示需求越來(lái)越高。本文介紹一種基于微波輻射計(jì)的風(fēng)羽圖繪制方法,能夠直觀地顯示風(fēng)場(chǎng)情況,為用戶(hù)對(duì)天氣的變化預(yù)測(cè)提供依據(jù)。
風(fēng)羽圖由由風(fēng)桿、風(fēng)羽、風(fēng)三角組成。
風(fēng)桿。風(fēng)桿表示風(fēng)向,風(fēng)羽表示風(fēng)速,風(fēng)桿長(zhǎng)度宜為0.6 cm至0.8 cm。
風(fēng)羽。風(fēng)羽為風(fēng)矢的組成部分,與風(fēng)向桿相配合,用來(lái)表示風(fēng)速與風(fēng)向。在北半球畫(huà)在風(fēng)向桿遠(yuǎn)離站圈一端的順時(shí)針向一方(即風(fēng)來(lái)向的左側(cè)),在南半球畫(huà)在逆時(shí)針向一方(即風(fēng)來(lái)向的右側(cè))。我國(guó)現(xiàn)行填圍規(guī)定風(fēng)羽與民失桿成120°夾角。每個(gè)風(fēng)羽長(zhǎng)劃(長(zhǎng)0.4cm)代表4m/s,短劃(長(zhǎng)0.2cm,為長(zhǎng)劃的一半)代表2m/s。長(zhǎng)劃與短劃示意圖見(jiàn)圖1。
圖1 短劃、長(zhǎng)劃和風(fēng)三角示意圖
風(fēng)三角。風(fēng)速等于或大于20m/s(或50kn)時(shí),則改用或另加用“風(fēng)三角(三角旗)”表示。1~24m/s區(qū)間風(fēng)羽效果圖見(jiàn)圖2。
圖2 1~24米/秒?yún)^(qū)間 風(fēng)羽效果圖
備注:○表示無(wú)風(fēng),風(fēng)速不明時(shí),在風(fēng)向桿尖端填“X”
總體思路:
將每個(gè)時(shí)刻的結(jié)構(gòu)體數(shù)組(包括風(fēng)速、風(fēng)向、高度),加入數(shù)據(jù)鏈表;隨時(shí)間不斷加載數(shù)據(jù),每次加載新數(shù)據(jù)后對(duì)整個(gè)數(shù)據(jù)鏈表里的數(shù)據(jù)進(jìn)行繪圖更新。
繪圖時(shí),根據(jù)整個(gè)數(shù)據(jù)鏈表的長(zhǎng)度Datalength,以及結(jié)構(gòu)體數(shù)組的最大維度MaxSize,將繪圖區(qū)域分成Datalength*MaxSize個(gè)繪圖矩形區(qū)域,在每個(gè)矩形區(qū)域內(nèi)進(jìn)行繪圖。
采用內(nèi)存繪圖,降低繪圖閃爍。
風(fēng)桿坐標(biāo)計(jì)算。設(shè)(x0,y0)為矩形區(qū)域的中心,m_frrr為風(fēng)桿長(zhǎng)度,本方法采用平移m_frrr/2.0作為風(fēng)桿的圓心起點(diǎn)。
風(fēng)桿的圓心起點(diǎn)(x1,y1)計(jì)算方法如下:
double PI = 3.14159265358979;
long x1 = x0 - (long)(m_ frrr/2.0f*sin(fFX/180.f*PI));
long y1 = y0 + (long)(m_ frrr/2.0f*cos(fFX/180.f*PI));
風(fēng)桿的終點(diǎn)(x2,y2)計(jì)算方法如下:
long x2 = x1 + (long)(m_ frrr*sin(fFX/180.f*PI));
long y2 = y1 - (long)(m_ frrr*cos(fFX/180.f*PI));
風(fēng)羽坐標(biāo)計(jì)算。設(shè)每個(gè)風(fēng)羽長(zhǎng)劃長(zhǎng)度為m_frrr/2;風(fēng)羽短劃長(zhǎng)度為m_frrr/4;設(shè)三角風(fēng)羽為直角三角形,斜邊長(zhǎng)度為m_ frrr/2;風(fēng)羽間隔m_frrr/8。
對(duì)每個(gè)風(fēng)羽三角,其坐標(biāo)計(jì)算如下:
在風(fēng)桿上的頂點(diǎn)坐標(biāo)(x3m,y3m)
long x3m = x1 + (long) (rxmnex*sin(fjd/180.f*PI));
long y3m = y1 - (long) (rxmnex*cos(fjd/180.f*PI));
其中rxmnex為風(fēng)桿上的頂點(diǎn)到風(fēng)桿的圓心起點(diǎn)(x1,y1)的距離長(zhǎng)度。
遠(yuǎn)離風(fēng)桿的頂點(diǎn)坐標(biāo)(x4m,y4m)
long x4m = x3m + (long)(rx*sin((120-fjd)/180.f*PI));
long y4m = y3m + (long) (rx*cos((120-fjd)/180.f*PI));
其中rx為三角形斜邊的長(zhǎng)度。
直角坐標(biāo)等于上一個(gè)的三角形的風(fēng)桿頂點(diǎn)坐標(biāo)。
對(duì)每個(gè)每個(gè)風(fēng)羽長(zhǎng)劃,其坐標(biāo)計(jì)算如下:
在風(fēng)桿上的點(diǎn)坐標(biāo)(x3n,y3n)
long x3n = x1 + (long) (rxmnex*sin(fjd/180.f*PI));
long y3n = y1 - (long) (rxmnex*cos(fjd/180.f*PI));
同上,rxmnex為風(fēng)桿上的頂點(diǎn)到風(fēng)桿的圓心起點(diǎn)(x1,y1)的距離長(zhǎng)度。
遠(yuǎn)離風(fēng)桿的點(diǎn)坐標(biāo)(x4n,y4n)
long x4n = x3n + (long)( m_ frrr/2*sin((120-fjd)/180.f*PI));
long y4n = y3n + (long)( m_ frrr/2*cos((120-fjd)/180.f*PI));
對(duì)每個(gè)每個(gè)風(fēng)羽短劃,其坐標(biāo)計(jì)算如下:
在風(fēng)桿上的點(diǎn)坐標(biāo)(x3i,y3i)
long x3i = x1 + (long) (rxmnex*sin(fjd/180.f*PI));
long y3i = y1 - (long) (rxmnex*cos(fjd/180.f*PI));
其中rxmnex為風(fēng)桿上的頂點(diǎn)到風(fēng)桿的圓心起點(diǎn)(x1,y1)的距離長(zhǎng)度。
遠(yuǎn)離風(fēng)桿的點(diǎn)坐標(biāo)(x4m,y4m)
long x4i = x3i + (long)( m_ frrr/4*sin((120-fjd)/180.f*PI));
long y4i = y3i + (long)( m_ frrr/4*cos((120-fjd)/180.f*PI));
以上fjd均為為風(fēng)向角度值。
繪圖。將儲(chǔ)存在結(jié)構(gòu)體中的數(shù)據(jù)按上訴思路進(jìn)行數(shù)據(jù)坐標(biāo)轉(zhuǎn)化后,利用VC函數(shù)MoveTo、LineTo以及FOR循環(huán)等等實(shí)現(xiàn)圖形繪制。
本方法在VC++6.0開(kāi)發(fā)環(huán)境下,進(jìn)行風(fēng)羽圖的繪圖實(shí)現(xiàn)。
所繪風(fēng)羽圖如圖3所示。
圖3 某時(shí)刻風(fēng)羽圖繪制效果圖
由實(shí)驗(yàn)結(jié)果可以,本方法繪制的風(fēng)羽圖對(duì)風(fēng)速和風(fēng)向有良好的展示效果。
(作者單位:中國(guó)電波傳播研究所)