倍可親

方位角的計算方法

作者:jolly.guojun  於 2010-6-23 22:11 發表於 最熱鬧的華人社交網路--貝殼村

通用分類:網路文摘|已有2評論

關鍵詞:

方位角的計算方法有多種,根據公式與工具有不同,現有四種計算方法:

  一、測量教材上的計算方法需要判斷象限對了解原理有一定幫助但在實際工作中不太實用在此不予介紹使用此方法計算的VB或VBA代碼如下:

  Public Const PI = 3.14159265359

  Function Pol(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Double '計算直線的方位角

  Dim Sub_y As Double

  Sub_y = Abs(y2 - y1)

  If Sub_y = 0 Then

  Sub_y = 0.0000000001

  End If

  Pol = Atn((Abs(x2 - x1)) / Sub_y)

  If x2 > x1 And y2 >= y1 Then '0-90

  ElseIf x2 < x1 And y2 <= y1 Then '180-270

  Pol = PI + Pol

  ElseIf x2 < x1 And y2 >= y1 Then '270-360

  Pol = 2 * PI - Pol

  ElseIf x2 >= x1 And y2 <= y1 Then '90-180

  Pol = PI - Pol

  End If

  End Function

  二、計算器上的pol()函數,用pol(dx,dy)計算,返回兩點間距離與方位角,如角度值為負+360即可,具體使用方法參照說明書上的pol()函數介紹;

  三、方位角通用萬能公式

  

  此萬能公式的VB或VBA代碼如下:

  Public Const PI = 3.14159265359

  Function Pol(x1 As Double, y1 As Double, x2 As Double, y2 As Double) As Double '計算直線的方位角

  Dim Sub_x As Double

  Sub_x = x2 - x1 + 0.0000000001

  Pol = PI - Sgn(Sub_x) * PI / 2 - Atn((y2 - y1) / Sub_x)

  End Function 

  sgn()函數為符號函數:

  sgn(x)的值只有三個:

  當x小於0時sgn(x)的值為-1

  當x大於0時sgn(x)的值為1

  當x等於0時sgn(x)的值為0

  計算器上沒有此函數,在編程時可用下列代碼實現此函數功能:

  if x<0 then

  sgn(x)=-1

  elseif x>0 then

  sgn(x)=1

  esle

  sgn(x)=0

  end if

  四、另一個通用公式

  S12=sqr( (x2-x12+(y2-y12)= sqr(x2+y2

  A12=arcsin((y2-y1)/S12

  S12為測站點1至放樣點2的距離;

  A12為測站點1至放樣點2的坐標方位角。

  x1,y1為測站點坐標;

  x2,y2為放樣點坐標。

  按公式A12=arcsin((y2-y1)/S12)計算出的方位角都要進行象限判斷後加常數才是真正的方位角。

  新計算公式為:

  A12=arccos(x/S12)*sgn(y)+360°

  式中sgn()為取符號函數,改公式只需加上條件(A12>360°, A12= A12-360°就可以計算出坐標方位角不需要進行象限判斷。

  以下公式要注意如果Yab=0,則應該把Yab加上一個很小的數即可解決,通常編程時把Yab+1E-10就可以不影響方位角精度。特別說明一點用此公式計算的值若小於0則加上360度就可得出方位角,不用判斷邊所在的象限。

1

高興

感動

同情

搞笑

難過

拍磚

支持

鮮花

發表評論 評論 (2 個評論)

回復 人權是非 2010-6-24 23:38
樓主好像把這貼子放錯了地方.
回復 jolly.guojun 2010-6-24 23:49
人權是非: 樓主好像把這貼子放錯了地方.
呵呵,是放錯了!這是我前段時間收藏的一份資料!我怕丟失所以就存放在這裡了!

facelist doodle 塗鴉板

您需要登錄后才可以評論 登錄 | 註冊

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2024-5-7 04:18

返回頂部