Các anh giúp em đoạn code tính góc đo beta trái trong trắc địa

  • Thread starter Thread starter t2k
  • Ngày gửi Ngày gửi
Liên hệ QC

t2k

Thành viên mới
Tham gia
16/8/07
Bài viết
2
Được thích
1
Các anh vui lòng xem giúp đoạn code này, em viết để tính góc beta trái của đường chuyền kinh vĩ trong trắc địa xuất theo định dạng d.ms, nhưng ko hiểu sao nó cứ báo lỗi #Value. Em mới mày mò VBA thôi, mà mò mãi mà ko biết tại sao !$@!!

Xin cảm ơn rất nhiều

PHP:
Function beta(x1 As Double, y1 As Double, x2 As Double, y2 As Double, x3 As Double, y3 As Double) As Double
    Dim dx12 As Double, dy12 As Double, dx23 As Double, dy23 As Double, dh1 As Double, dh2 As Double, beta1 As Double
    Dim d As Double, m As Double, s As Double
    Dim pi As Double
    pi = 4 * Atn(1)
    dx12 = x2 - x1
    dy12 = y2 - y1
    If dx12 = 0 Then
        If dy12 > 0 Then
            dh1 = pi / 2
        Else
            If dy12 < 0 Then
               dh1 = 3 * pi / 2
            End If
        End If
    Else
        If dy12 = 0 Then
            If dx12 > 0 Then
                dh1 = 0
            Else
                dh1 = pi
            End If
        Else
            If dx12 > 0 Then
                dh1 = Atn(dy12 / dx12) + 2 * pi
            Else
                dh1 = Atn(dy12 / dx12) + pi
            End If
        End If
    End If
    If dh1 >= 2 * pi Then
        dh1 = dh1 - 2 * pi
    End If
    If dh1 < 0 Then
        dh1 = dh1 + 2 * pi
    End If
    
    dx23 = x3 - x2
    dy23 = y3 - y2
    If dx23 = 0 Then
        If dy23 > 0 Then
            dh2 = pi / 2
        Else
            If dy23 < 0 Then
               dh2 = 3 * pi / 2
            End If
        End If
    Else
        If dy23 = 0 Then
            If dx23 > 0 Then
                dh2 = 0
            Else
                dh2 = pi
            End If
        Else
            If dx23 > 0 Then
                dh2 = Atn(dy23 / dx23) + 2 * pi
            Else
                dh2 = Atn(dy23 / dx23) + pi
            End If
        End If
    End If
    If dh2 >= 2 * pi Then
        dh2 = dh2 - 2 * pi
    End If
    If dh2 < 0 Then
        dh2 = dh2 + 2 * pi
    End If
    
    beta1 = dh2 - dh1 + pi
    If beta1 >= 2 * pi Then
        beta1 = beta1 - 2 * pi
    End If
    If beta1 < 0 Then
        beta1 = beta1 + 2 * pi
    End If
    d = Int(beta1 * (180 / pi))
    m = Int(beta1 * (180 * 60 / pi)) - d * 60
    s = Int(beta1 * (180 * 3600 / pi)) - d * 3600 - m * 60
    beta = d + m / 100 + s / 10000
End Function
 
Lần chỉnh sửa cuối:
s = Int(beta1 * (180 / pi * 3600)) - d * 3600 - m * 60
bạn đổi lại dòng này xem.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom