內(nèi)容提要:為了減輕航海人員的繪圖作業(yè)量,提高繪制水平夾角網(wǎng)的速度和精度,論文研究了在電子海圖上編程繪制水平夾角網(wǎng)的實用問題,論述了繪制水平夾角網(wǎng)的相關數(shù)學模型,設計了繪制水平夾角網(wǎng)的流程,編制了實用模塊。并通過示例,驗證了模塊的可行性。
關鍵詞:電子海圖 計算機繪圖 水平夾角網(wǎng)
0引言
水平角定位是一種常用的高精度的陸標定位方法,通過在海圖上預先繪制水平夾角網(wǎng),可以實現(xiàn)快速準確定位。在定點拋錨、掃海、島礁區(qū)航行等場合常常使用水平夾角網(wǎng)定位。
對航海人員來說,繪制水平夾角網(wǎng),是一項相當繁瑣的工作,F(xiàn)在電子海圖已普遍裝備到各種船舶,利用電子海圖的數(shù)據(jù)查詢、任意縮放和計算機的計算、繪圖功能,在電子海圖顯示信息系統(tǒng)中,可以快速、準確地繪制出需要的水平夾角網(wǎng),大大減輕航海人員的作業(yè)量,提高繪制精度。
1相關數(shù)學模型
水平夾角網(wǎng)是由兩組共弦的圓弧組成,每組圓弧所共弦為兩觀測目標的連線,根據(jù)弦和不同觀測角(圓周角)畫出一組圓,圓的數(shù)量根據(jù)觀測角的起止值和間隔決定。
在電子海圖上繪水平夾角網(wǎng),基本方法就是根據(jù)觀測目標、定位區(qū)域的坐標,運用解析方法,計算出觀測角起止值、每個位置圓的圓心和半徑及圓弧的起止角度,然后調(diào)用繪圖函數(shù)進行繪圖。
1.1觀測角起止值計算
對一個特定的定位區(qū)域,觀測兩個固定目標的水平夾角值是在一定范圍內(nèi)變化的,如圖1:A、B為兩個觀測目標,D1、D2、D3、D4為定位區(qū)域的頂點,α1與α2為區(qū)域相對觀測目標外側的兩個頂點觀測目標的水平夾角,α為過A、B兩點,且與區(qū)域內(nèi)側邊相切的圓對應的觀測角。
(1)觀測角的最小值是α1與α2中的較小值,計算方法是:
①運用距離計算公式:
D=[(x2-x1)2+(y2-y1)2]1/2計算ΔAD4B和ΔAD3B的各邊長度;
②運用余弦定理公式:
sinA=(b2+c2-a2)/2bc
根據(jù)三邊長度,分別計算角α1與α2。
③比較α1與α2,取較小值作為繪制水平夾角網(wǎng)的起始值。
當區(qū)域相對觀測目標外側為兩個以上頂點時,可計算各頂點對應的夾角,取其最小值為繪制水平夾角網(wǎng)的起始值。
(2)α是繪制水平夾角網(wǎng)的終止值,計算方法是:
①計算AB間的距離:
DAB=[(xa-xb)2+(ya-yb)2]1/2
②建立以AB為共弦的位置線圓的圓心方程:
Y=kX+b
k=(xb-xa)/(ya-yb)
bo=(xa2-xb2+ya2-yb2)/2(ya-yb)
③建立過D1、D2的直線方程Ax+By+C=0
A=y2-y1B=x2-x1
C=x2y1-x1y2
④設α角對應的位置圓圓心坐標為(xo,yo),解方程組:
設:D=1/(A2+B2)
a=1+k2-D(A+kB)2
b=-2[xa+k(ya-bo)+D(A+kB)(Bbo+C)]
c=xa2+ya2-2boya+bo2-D(Bbo+C)2
圓心坐標為:
⑤計算對應圓半徑R和觀測角α
R=[(xa-xo)2+(ya-yo)2]1/2
α=acos[1-DAB2/(2R2)]
1.2位置圓的圓心和半徑計算
每個位置圓是對觀測目標特定觀測角的位置線,其圓心和半徑可根據(jù)目標坐標和觀測角來確定。如圖2所示,設目標A、B為兩觀測目標,觀測角為α,圓APB為對應的位置線。
設位置線的圓心為O,根據(jù)幾何原理,O點必在弦線AB的垂直平分線OG上,且半
徑AO或BO與OG的夾角等于觀測角α,即∠AOG=∠BOG=α。計算圓心和半徑的方法為:
(1)計算弦AB的長度DAB和方向F:
DAB=[(xa-xb)2+(ya-yb)2]1/2
F=a tan[(yb-ya)/(xb-xa)]
(2)計算位置圓半徑R:
R=(DAB/2)/sinα
(3)計算圓心O的坐標(xo,yo):
xo=xa+R·sin(F-α)
yo=ya+R·cos(F-α)
1.3位置線圓弧起止角計算
水平角位置線網(wǎng)只需畫出定位區(qū)域內(nèi)的位置線部分,其他地方不必畫出,否則,會使圖面混亂,影響使用。為了只畫出特定區(qū)域內(nèi)的位置線部分,需要計算畫每個位置線圓的起止角度。如圖3中的E、F方向。
(1)根據(jù)定位區(qū)域相鄰兩頂點坐標,建立過兩點的直線方程:
y=kx+b
其中:k=(y2-y1)/(x2-x1)
b=(x1y2-x2y1)/(x1-x2)
(2)根據(jù)1.2計算的位置圓半徑R和圓心O的坐標(xo,yo),建立船位線圓的方程為:
(x-xo)2+(y-yo)2=R2
(3)解方程組:
得:
如果觀測角α是在1.1計算的起止角范圍內(nèi),上述解為兩組,表示位置圓與直線有兩個交點;保留在對應的邊界線段內(nèi)的點,可能一個是,可能兩個是,也可能一個都不是。
重復上述過程,解出位置線圓與所有邊界的交點。交點通常為兩個,也有可能為四個。
(4)根據(jù)圓心O和各交點的坐標,利用公式:
Fi=atan[(yi-yo)/(xi-xo)]
計算各交點對應的圓心方位。
(5)將各交點方位按升序排位,F1、F2即為位置線第一段圓弧的起、終點方位,F3、F4為位置線第二段圓弧的起、終點方位(一般沒有)。
2繪制水平角網(wǎng)的編程實現(xiàn)
通過上述數(shù)模分析可以看出,繪制水平夾角網(wǎng)涉及到大量的計算,人工計算難以想象。但對計算機而言,上述計算是微不足道的,關鍵是給計算機安排合理的算法流程。
2.1繪制水平角網(wǎng)的基本流程
計算流程如圖4和圖5。具體計算過程是:
(1)輸入相關數(shù)據(jù),設定初始標志。
數(shù)據(jù)主要是定位目標的經(jīng)緯度和定位區(qū)域各頂點的經(jīng)緯度及水平角網(wǎng)的間隔。各經(jīng)緯度可采用對話框輸入,最好是結合電子海圖顯示信息系統(tǒng),直接在電子海圖上用鼠標點取。
初始標志用于區(qū)分第幾組水平角網(wǎng)。
(2)判別是幾組水平角網(wǎng)。
第一組將左標和中標坐標分別賦予目標A、B的坐標;第二組則將中標和右標坐標分別賦予目標A、B的坐標。
(3)調(diào)用繪制以A、B為觀測目標的水平角位置線流程。具體計算內(nèi)容為:
根據(jù)A、B坐標計算A、B間的方位距離;
根據(jù)A、B坐標和定位區(qū)域頂點坐標,計算最小觀測值α0和最大觀測值α1,作為循環(huán)計算的起、止依據(jù);
設定α=α0+Δα作為循環(huán)計算初始值。
②根據(jù)α,計算對應的位置圓圓心坐標和半徑大小。
③計算位置圓與定位區(qū)域各邊界的交點坐標及相應的圓心方位。
④調(diào)用畫弧函數(shù),根據(jù)圓心、半徑,起終點方位劃出相應圓弧。
⑤α增加間隔Δα,判斷是否超過最大值,是則結束計算,否則繼續(xù)重復②~⑤。
(4)標志加1,判斷標志是否大于1,是則結束,否則重復(2)~(4),繪制另一組水平角位置網(wǎng)。
2.2繪制水平夾角網(wǎng)的實現(xiàn)
根據(jù)以上所設計的算法流程,作者利用VC++6.0進行了編程,并作為動態(tài)鏈接程序,掛接到相關電子海圖顯示與信息系統(tǒng)(ECDIS),通過菜單調(diào)用。圖6是程序的運行界面和繪制結果。
程序運行非常方便,通過組合框選擇需要的海圖、顯示比例和位置線間隔。海圖選擇可根據(jù)需要選擇ECDIS中已有的任意一張海圖,顯示比例決定ECDIS的縮放程度,位置線間隔決定繪制位置線的疏密。上例選擇了三亞附近的1087海圖,顯示比例為1∶1;位置線間隔為5°。
通過單選控鍵和鼠標結合,選取定位目標和定位區(qū)域邊界。當某按鍵被選,后面的鼠標單擊時對應的海圖位置即為其位置,并將對應經(jīng)緯度顯示在后面的編輯框內(nèi)。上例的觀測目標分別選取西瑁洲燈樁、東瑁洲埋石點和三亞角燈樁為左標、中標和右標。
當參數(shù)設置好,目標和區(qū)域選擇完畢,只需單擊繪制按鍵,不到一秒鐘就可在選定區(qū)域內(nèi)繪制出符合設定要求的水平角位置線網(wǎng)。
作者:何立居1 李啟華2 來源:航海技術