Math Visual basic,atn2转换为指南针方位

Math Visual basic,atn2转换为指南针方位,math,vb6,Math,Vb6,由于atan2返回的值在-π范围内+π(即,-180°…+180°),将结果归一化为指南针方位(在0°…360°范围内,将-ve值转换为180°…360°范围),转换为度,然后使用(θ+360)%360,其中%为模 上面的段落是我在网上找到的。我用的是VB6,我的代码是这样的 brng=(θ+360)模360 (其中0=-68)我得到的答案是292°,但预期答案是248° 我犯了错误吗。。?还是我遗漏了什么。?请帮帮我 更新: 我会进一步解释我的问题 Dim b As Double Dim x

由于atan2返回的值在-π范围内+π(即,-180°…+180°),将结果归一化为指南针方位(在0°…360°范围内,将-ve值转换为180°…360°范围),转换为度,然后使用(θ+360)%360,其中%为模

上面的段落是我在网上找到的。我用的是VB6,我的代码是这样的

brng=(θ+360)模360

(其中0=-68)我得到的答案是292°,但预期答案是248°

我犯了错误吗。。?还是我遗漏了什么。?请帮帮我

更新:

我会进一步解释我的问题

Dim b As Double
Dim x As Double 
Dim y As Double 
Dim Dlat As Double 
Dim DLon As Double

Private Const pi As Double = 3.14159265358979

Public Function Atn2(ByVal y As Double, ByVal x As Double) As Double
    On Error GoTo DivideError
    Atn2 = Atn(y / x)
    If (x < 0) Then
        If (y < 0) Then Atn2 = Atn2 - vbPI Else Atn2 = Atn2 + vbPI
    End If
    Exit Function

DivideError:
    If Abs(y) > Abs(x) Then   'Must be an overflow
        If y > 0 Then Atn2 = vbPI / 2 Else Atn2 = -vbPI / 2
    Else
        Atn2 = 0   'Must be an underflow
    End If
    Resume Next
End Function


Public Sub AFAMP()
    lat1 = Val(Text1.Text) * pi / 180 'conveting to radians
    lat2 = Val(Text2.Text) * pi / 180
    Long1 = Val(Text3.Text) * pi / 180
    Long2 = Val(Text4.Text) * pi / 180
    Dlat = (lat1 - lat2)
    DLon = (Long1 - Long2)
    y = Math.Sin(DLon) * Math.Cos(lat2)
    x = Math.Cos(lat1) * Math.Sin(lat2) - Math.Sin(lat1) * Math.Cos(lat2) * Math.Cos(DLon)
    b = Atn2(y, x) * (180 / pi)
    Text5.Text = (b +360) mod 360
End Sub

我已经和安核实过了,答案是248。我的情况是292度。有人能帮我吗?我被卡住了。

正如迪安娜在评论中所说,292是正确的答案<代码>-68+360=292

你为什么期望248<代码>-68+360=292你似乎走错了方向。我想你是在计算两点之间的方位。我不能确切地说问题出在哪里,但我发现了一些有希望的东西——如果我在在线计算器中交换你的点1和点2,我会得到大约68度的方位角。注意68+292=360。也许你的问题就在于你对轴承的定义?请不要重复同样的问题,请更新原来的问题。我已经为你们做了这件事。我也和谷歌地球核实过了,正确答案是248,但我不明白如何找到真正的答案@凯文,我只是在详细说明我的问题。感谢您以友好的方式编辑我的问题。
lat1 = Val(7.337361) * pi / 180 

lat2 = Val(7.000667) * pi / 180

Long1 = Val(81.626198) * pi / 180

Long2 = Val(80.773737) * pi / 180