VB6・VBAメモ:逆正接(アークタンジェント)

VB6・VBAで角度を求めるためにはAtn関数
を使用するかと思いますが、
Atn関数では方向の判別ができないため0〜180度までしか使えないので、
0〜360度まで使用できるAtn2関数を作成してみました。

この関数は底辺と高さの長さからラジアンを計算します。
底辺と高さの方向を+-で判別することによって360度の角度を判断します。


概要

Atn2(X As Double, Y As Double) As Double
機能 指定した底辺と高さの長さからラジアンを返す
引数 Y 底辺の長さ Double型
X 高さの長さ Double型
戻り値 計算結果 Double型
サンプルコード
'機能:逆正接関数
'引数:Number:正接(Tan)
'戻値:ラジアン
Function Atn2(X As Double, Y As Double) As Double
    If X = 0 And Y = 0 Then
        Atn2 = 0
        
    ElseIf X > 0 And Y = 0 Then 'θ=0
        Atn2 = ((PI / 2) * 0)

    ElseIf X = 0 And Y > 0 Then 'θ=90
        Atn2 = ((PI / 2) * 1)

    ElseIf X < 0 And Y = 0 Then 'θ=180
        Atn2 = ((PI / 2) * 2)

    ElseIf X = 0 And Y < 0 Then 'θ=270
        Atn2 = ((PI / 2) * 3)

    ElseIf X > 0 And Y > 0 Then '  0<θ<90
        Atn2 = Atn(Abs(Y) / Abs(X)) + ((PI / 2) * 0)

    ElseIf X < 0 And Y > 0 Then ' 90<θ<180
        Atn2 = ((PI / 2) - Atn(Abs(Y) / Abs(X))) + ((PI / 2) * 1)

    ElseIf X < 0 And Y < 0 Then '180<θ<270
        Atn2 = Atn(Abs(Y) / Abs(X)) + ((PI / 2) * 2)

    ElseIf X > 0 And Y < 0 Then '270<θ<360
        Atn2 = ((PI / 2) - Atn(Abs(Y) / Abs(X))) + ((PI / 2) * 3)

    End If
End Function


三角関数を使用する前に

説明 記述例
円周率を求める関数
※円周率=アークタンジェント(1)×4
Function PI() As Double
    PI = Atn(1) * 4
End Function
角度からラジアンを求める関数
※ラジアン=角度*(円周率/180)
Function GetRadian(ByVal angle As Double) As Double
    GetRadian = angle * (PI / 180)
End Function
ラジアンから角度を求める関数
※角度=ラジアン/(円周率/180)
Function GetAngle(ByVal radian As Double) As Double
    GetAngle = radian / (PI / 180)
End Function


使用例

説明 記述例 出力
底辺Xと高さYから角度θを取得
(X=√3,Y=1の場合)
Dim rad As Double, θ As Double
DIm X As Double, Y As Double

X = Sqr(3)
Y = 1

rad = Atn2(X, Y)
θ = GetAngle(rad)

Debug.Print θ
30


コメント
コメントする








    
この記事のトラックバックURL
トラックバック