本發(fā)明涉及機載矢量數(shù)字地圖軟件運行時實時繪制線狀符號的方法。
背景技術:
機載數(shù)字地圖是現(xiàn)代飛機航電系統(tǒng)的重要組成部分。線狀符號是地圖數(shù)據(jù)符號化的重要內容,用來表達地理空間上沿某個方向延伸的線狀或帶狀特征地理要素,如河流、道路、運輸線、國界線等。由于線狀符號通常由數(shù)量不等的定位點組成的光滑曲線來描述,其形狀的連續(xù)變化可以產生實線和間斷線,也可用多種符號疊加和組合的方式構成復雜符號,因而線狀符號的組織和填充都需要大量運算。
在機載環(huán)境下,如何利用有限的硬件資源,平衡線狀符號的外觀、符號繪制靈活性和繪制效率,是線狀符號繪制的核心問題?,F(xiàn)有的矢量數(shù)字地圖軟件通常采用三種方法:一是純函數(shù)繪制,按符號表示的地物種類分類,并為每一類符號寫一個繪制函數(shù);二是縱向疊加圖元法,將復雜線狀符號縱向拆分成多個基本單元,按順序分別從符號的起點到終點繪制出各單元符號,完成圖元的縱向疊加;三是橫向循環(huán)圖元法,將線狀符號定義為一個復雜循環(huán)單元畫刷,沿線步進填充繪制,形成連續(xù)的線狀符號。純函數(shù)繪制方法速度較快,但符號可編輯性和維護性差,用戶定制和修改十分困難;縱向疊加圖元法通過基本單元的組合形成復雜符號,使用靈活,但同一條線拆分成基本單元后,需要多次繪制,同時基本單元之間需要大量計算位置依賴關系,繪制效率較低;橫向循環(huán)圖元法使用一個復雜循環(huán)單元步進繪制,從起點到終點單次繪制即可完成整條線符號,但需要對每次步進的參數(shù)進行計算,機載環(huán)境下繪制效率也較低。
技術實現(xiàn)要素:
為克服機載環(huán)境硬件資源運算和渲染能力較弱的問題,本發(fā)明提供一種線狀符號繪制方法,對線要素圖元合理拓展簡化,精簡運算復雜度,實現(xiàn)快速繪制線狀符號的方法,提高線狀符號使用的靈活性和繪制效率。
一種線狀符號繪制方法,包含以下步驟:
步驟一、以組成線要素的線段為矩形中心線,往垂直于線段的方向拓展,形成連續(xù)又獨立的一組矩形圖元;
步驟二、當相鄰線段為轉角處時,在相鄰線段的裂縫處,以w/2為長度在轉角平分線上插入1個點形成四邊形圖元;其中w為矩形圖元的寬度;
步驟三、計算各矩形圖元和四邊形圖元的角點坐標;
步驟四、創(chuàng)建并生成以矩形圖元和四邊形圖元為基本元素的顯示列表,根據(jù)顯示列表中矩形圖元和四邊形圖元的角點坐標填充紋理。
優(yōu)選地,所述步驟四中還包含當相鄰線段為轉角處時,利用模版緩沖區(qū)消除矩形圖元的重疊現(xiàn)象。
優(yōu)選地,所述一種線狀符號繪制方法還包含畫面縮放時,通過雙數(shù)據(jù)緩存,在后臺重新執(zhí)行步驟一至四,再通過緩存交換到前臺。
本發(fā)明的有益效果為:通過對線要素圖元合理拓展簡化,以較少的運算次數(shù),滿足線狀符號繪制需求,有效減少對計算資源的占用,兼顧符號使用靈活性,有效提高機載矢量數(shù)字地圖的繪圖效率,效果良好,值得推廣。
附圖說明
圖1為線段矩形圖元拓展示意圖;
圖2為線轉角四邊形圖元簡化示意圖;
圖3為矩形圖元參數(shù)計算示意圖;
圖4為圖元快速組織與繪制示意圖;
圖5為本發(fā)明所述一種線狀符號繪制方法的流程示意圖。
具體實施方式
為了更好地理解本發(fā)明,下面通過附圖和實施例對本發(fā)明作進一步詳細說明。
如圖5所示,一種線狀符號快速繪制方法,包括以下步驟:線段矩形圖元拓展、線轉角四邊形圖元簡化、圖元參數(shù)快速計算、圖元快速組織與繪制。
(一)線段矩形圖元拓展,該方法以組成線要素的線段為矩形中心線,往垂直于線的方向拓展,形成連續(xù)又獨立的一組矩形圖元。
如圖1所示的矢量線要素有n個組成節(jié)點,n個節(jié)點可以形成n-1條線段。若線符號寬為w,則可由n-1條線段拓寬形成n-1個矩形,線段可形成矩形□A1B1C1D1,線段可形成矩形□A2B2C2D2……矩形長為對應線段的長度,寬為線符號的寬度w。
(二)線轉角四邊形圖元簡化,該方法在當相鄰線段為轉角處時,在相鄰線段的裂縫處,以w/2為長度在轉角平分線上插入1個點形成四邊形圖元;其中w為矩形圖元的寬度
如圖2所示,按步驟一所拓展的矩形圖元之間存在裂縫,影響線符號的視覺效果,若在裂縫處做圓角平滑會插入大量點,影響線的繪制效率,所以本方法在線轉角處,采用四邊形圖元簡化,利用線段節(jié)點和相鄰矩形圖元的角點,在轉角平分線上插入1個點形成四邊形圖元,
(三)圖元參數(shù)快速計算,該方法通過空間幾何變換,利用矢量旋轉和距離近似運算算法快速計算各矩形圖元和四邊形圖元的角點坐標。
如圖3所示,設點L1的坐標為(xL1,yL1),點L2的坐標為(xL2,yL2),線段的長度為h,線符號寬度為w,角∠B1L1L2為直角。
矢量:
而:
其中:
由于:
cos(90°)=0,sin(90°)=1
代入點L1和L2的坐標可得到點B1的坐標為:
在計算點B1的坐標過程中,只有簡單的四則運算,沒有復雜計算,可以大大提高計算速度。矩形其它點的坐標可以用類似的方法計算。
點A1的坐標為:
點C1的坐標為:
點D1的坐標為:
線轉角四邊形的頂點中,只需要計算新插入的角平分線上的點Tn的坐標,圖2中,點p為ΔC1L2B2角平分線與邊C1B2的交點,點p的坐標為:
xp=(xc1+xb2)/2
yp=(yc1+yb2)/2
線段的長度為
簡化為(xp-xL2)+(yp-yL2)
則點T1的坐標為:
xT1=xL2+w·lpL2·(xp-xL2)/2
yT1=y(tǒng)L2+w·lpL2·(yp-yL2)/2
在此計算過程中,也只有簡單的四則運算。
(四)圖元快速組織與繪制,該方法根據(jù)計算的線段矩形圖元和轉角四邊形圖元的坐標,創(chuàng)建并生成以四邊形為基本元素的顯示列表,在矩形圖元和四邊形圖元中填充紋理。將線狀符號提取循環(huán)段的形狀、色彩、尺寸和圖案,生成基本紋理圖元。以線的起點為紋理初始坐標,以累積線段長為下一節(jié)點紋理坐標,紋理坐標不斷累加,利用紋理環(huán)繞時可選擇自動重復的特性,在沿線方向設置紋理重復環(huán)繞,在繪制顯示列表時,使符號紋理單元自動沿線循環(huán)填充,形成符合視覺要求的線狀符號,如圖4所示。畫面縮放時,通過雙數(shù)據(jù)緩存,在后臺重新計算線圖元參數(shù),再通過緩存交換到前臺,實現(xiàn)圖元縮放效果的平滑。在繪制圖元時,使用模版緩沖區(qū),消除線轉角時矩形圖元的重疊現(xiàn)象,優(yōu)化顯示效果。