極角と方位角の相互変換

投稿日:2016/9/1 (木) 更新日:

極角(polar angle)から方位角(azimuth angle)、もしくはその逆を計算する方法です。極角と方位角は 1つの式で求めることができます。

  1. 元の値を負にして90を加算し、さらに360を加算
  2. その値を360で除算した剰余が極角/方位角を相互変換した値

この方法で角度が0度未満や360度より大でも 0 =< result < 360 の値を返すことができます。極角・方位角についてはこちらの記事をご覧ください。

result = (90 - value + 360) % 360 
result = (90 - value + 360) % 360    'もしくは
result = (90 - value + 360) Mod 360
'角度の相互変換
'esriDirectionType
'   esriDTNorthAzimuth      :北方位角(北から時計回りの角度)
'   esriDTSouthAzimuth      :南方位角(南から時計回りの角度)
'   esriDTPolar             :極座標角(東から反時計回りの角度)
'   esriDTQuadrantBearing   :四分円方位角(指定した四方位から指定方位に向いた角度[eg,S 45 E])
Private Function GetAzimuthalToGeneral(ByVal Value As Variant, _
                                        Optional ByVal InputType As esriDirectionType = esriDTNorthAzimuth, _
                                        Optional ByVal OutputType As esriDirectionType = esriDTPolar, _
                                        Optional ByVal Precision As Long = 0) As Variant
 
    Dim pAngularConverter As IAngularConverter
    Set pAngularConverter = New AngularConverter
     
    pAngularConverter.SetString Value, InputType, esriDUDecimalDegrees
     
    Select Case OutputType
    Case esriDTQuadrantBearing
        GetAzimuthalToGeneral = pAngularConverter.GetString(OutputType, esriDUDecimalDegrees, Precision)
         
    Case Else
        GetAzimuthalToGeneral = pAngularConverter.GetAngle(OutputType, esriDUDecimalDegrees)
         
    End Select
          
End Function

関連記事

-プログラミング
-, , ,

Copyright© WINGFIELD since1981 , 2018 All Rights Reserved.