◎姜亦宏 楊麗麗
微波輻射計風羽圖繪制方法
◎姜亦宏 楊麗麗
本文闡述了一種風羽圖的繪制方法,用二維彩色繪圖展示風速、風向等,為輻射計在氣象領域的應用提供更多的產品展示。本文給出了該方法在VC++6.0下的實現方式。實驗結果證明,該風羽圖的繪制方法具有可操作性和實用性。
風羽圖,是氣象領域表示風向、風速的符號圖。根據風羽圖,可以分析糊涂區域范圍內的風場情況。
隨著微波輻射計在氣象領域的推廣,輻射計軟件對風羽圖的展示需求越來越高。本文介紹一種基于微波輻射計的風羽圖繪制方法,能夠直觀地顯示風場情況,為用戶對天氣的變化預測提供依據。
風羽圖由由風桿、風羽、風三角組成。
風桿。風桿表示風向,風羽表示風速,風桿長度宜為0.6 cm至0.8 cm。
風羽。風羽為風矢的組成部分,與風向桿相配合,用來表示風速與風向。在北半球畫在風向桿遠離站圈一端的順時針向一方(即風來向的左側),在南半球畫在逆時針向一方(即風來向的右側)。我國現行填圍規定風羽與民失桿成120°夾角。每個風羽長劃(長0.4cm)代表4m/s,短劃(長0.2cm,為長劃的一半)代表2m/s。長劃與短劃示意圖見圖1。

圖1 短劃、長劃和風三角示意圖
風三角。風速等于或大于20m/s(或50kn)時,則改用或另加用“風三角(三角旗)”表示。1~24m/s區間風羽效果圖見圖2。

圖2 1~24米/秒區間 風羽效果圖
備注:○表示無風,風速不明時,在風向桿尖端填“X”
總體思路:
將每個時刻的結構體數組(包括風速、風向、高度),加入數據鏈表;隨時間不斷加載數據,每次加載新數據后對整個數據鏈表里的數據進行繪圖更新。
繪圖時,根據整個數據鏈表的長度Datalength,以及結構體數組的最大維度MaxSize,將繪圖區域分成Datalength*MaxSize個繪圖矩形區域,在每個矩形區域內進行繪圖。
采用內存繪圖,降低繪圖閃爍。
風桿坐標計算。設(x0,y0)為矩形區域的中心,m_frrr為風桿長度,本方法采用平移m_frrr/2.0作為風桿的圓心起點。
風桿的圓心起點(x1,y1)計算方法如下:
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));
風桿的終點(x2,y2)計算方法如下:
long x2 = x1 + (long)(m_ frrr*sin(fFX/180.f*PI));
long y2 = y1 - (long)(m_ frrr*cos(fFX/180.f*PI));
風羽坐標計算。設每個風羽長劃長度為m_frrr/2;風羽短劃長度為m_frrr/4;設三角風羽為直角三角形,斜邊長度為m_ frrr/2;風羽間隔m_frrr/8。
對每個風羽三角,其坐標計算如下:
在風桿上的頂點坐標(x3m,y3m)
long x3m = x1 + (long) (rxmnex*sin(fjd/180.f*PI));
long y3m = y1 - (long) (rxmnex*cos(fjd/180.f*PI));
其中rxmnex為風桿上的頂點到風桿的圓心起點(x1,y1)的距離長度。
遠離風桿的頂點坐標(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為三角形斜邊的長度。
直角坐標等于上一個的三角形的風桿頂點坐標。
對每個每個風羽長劃,其坐標計算如下:
在風桿上的點坐標(x3n,y3n)
long x3n = x1 + (long) (rxmnex*sin(fjd/180.f*PI));
long y3n = y1 - (long) (rxmnex*cos(fjd/180.f*PI));
同上,rxmnex為風桿上的頂點到風桿的圓心起點(x1,y1)的距離長度。
遠離風桿的點坐標(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));
對每個每個風羽短劃,其坐標計算如下:
在風桿上的點坐標(x3i,y3i)
long x3i = x1 + (long) (rxmnex*sin(fjd/180.f*PI));
long y3i = y1 - (long) (rxmnex*cos(fjd/180.f*PI));
其中rxmnex為風桿上的頂點到風桿的圓心起點(x1,y1)的距離長度。
遠離風桿的點坐標(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均為為風向角度值。
繪圖。將儲存在結構體中的數據按上訴思路進行數據坐標轉化后,利用VC函數MoveTo、LineTo以及FOR循環等等實現圖形繪制。
本方法在VC++6.0開發環境下,進行風羽圖的繪圖實現。
所繪風羽圖如圖3所示。

圖3 某時刻風羽圖繪制效果圖
由實驗結果可以,本方法繪制的風羽圖對風速和風向有良好的展示效果。
(作者單位:中國電波傳播研究所)