方位角的计算方法

作者: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 个评论)

2 回复 人权是非 2010-6-24 23:38
楼主好像把这贴子放错了地方.
2 回复 jolly.guojun 2010-6-24 23:49
人权是非: 楼主好像把这贴子放错了地方.
呵呵,是放错了!这是我前段时间收藏的一份资料!我怕丢失所以就存放在这里了!

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

关于本站 | 隐私政策 | 免责条款 | 版权声明 | 联络我们 | 刊登广告 | 转手机版 | APP下载

Copyright © 2001-2013 海外华人中文门户:倍可亲 (http://www.backchina.com) All Rights Reserved.

程序系统基于 Discuz! X3.1 商业版 优化 Discuz! © 2001-2013 Comsenz Inc. 更新:GMT+8, 2024-4-11 06:09

倍可亲服务器位于美国圣何塞、西雅图和达拉斯顶级数据中心,为更好服务全球网友特统一使用京港台时间

返回顶部