組込関数 Atn

数値・数学関数

VBA(Visual Basic for Applications)における組み込み関数 Atn は、逆正接関数(アークタンジェント)を求めるための数学関数です。この関数は、三角関数の1つである「タンジェント(tan)」の逆関数に該当し、数値を渡すと、その値がタンジェントとなる角度(ラジアン)を返します。


■ 1. Atn関数とは?

Atn 関数は、「tan(θ) = x」を満たす角度 θ(ラジアン)を求めるための関数です。数学ではこれを「arctangent(アークタンジェント)」と呼び、VBAではこの機能を Atn(number) として提供しています。

具体的には、ある数値 x に対し、

Atn(x) = θ(ラジアン単位)

となるような角度 θ を返します。


■ 2. Atn関数の構文

Atn(number)

引数:

  • number:任意の実数(Double 型)

戻り値:

  • number がタンジェント値であるような角度(ラジアン単位)を Double 型で返します。値の範囲は -π/2 ~ π/2(約 -1.5708 ~ 1.5708 ラジアン)。

■ 3. ラジアンと度数の関係

VBA の三角関数は ラジアン単位を使用します。度数を使いたい場合は、以下の変換が必要です:

ラジアン → 度

度 = ラジアン × 180 / π

度 → ラジアン

ラジアン = 度 × π / 180
Const PI As Double = 3.14159265358979
Dim rad As Double
Dim deg As Double
rad = Atn(1) ' → 約0.7854(= π/4)
deg = rad * 180 / PI ' → 45度

■ 4. Atn関数の基本例

Const PI As Double = 3.14159265358979

Debug.Print Atn(1) ' ≒ 0.7854(π/4ラジアン、45度)
Debug.Print Atn(0) ' = 0
Debug.Print Atn(-1) ' ≒ -0.7854(-45度)
Debug.Print Atn(1000) * 180 / PI ' ≒ 89.94度(tan(θ) ≒ 無限大)

■ 5. 応用例

● 直角三角形から角度を求める

直角三角形で、隣辺が 4、対辺が 3 の場合、角度 θ は:

θ = Atn(対辺 / 隣辺)
Dim angle As Double
Const PI As Double = 3.14159265358979
angle = Atn(3 / 4)
Debug.Print "角度(度):" & angle * 180 / PI ' ≒ 36.87度

● ベクトルの角度を求める(2Dグラフィックス)

2次元座標において、X軸とベクトルとのなす角度を求めるには、通常 Atn(y / x) を使用します。ただし、x が負の場合は象限が異なるため注意が必要です。

この場合、VBAには Atn2(y, x) のような関数がないため、自分で象限を考慮して処理します:

Function GetAngleDegrees(x As Double, y As Double) As Double
Const PI As Double = 3.14159265358979
Dim angle As Double

If x = 0 Then
If y > 0 Then
angle = PI / 2
ElseIf y < 0 Then
angle = -PI / 2
Else
angle = 0 ' x=0, y=0 の場合は0とする
End If
Else
angle = Atn(y / x)
If x < 0 Then angle = angle + PI
End If

GetAngleDegrees = angle * 180 / PI
End Function

' 使用例
Debug.Print GetAngleDegrees(1, 1) ' 45度
Debug.Print GetAngleDegrees(-1, 1) ' 135度
Debug.Print GetAngleDegrees(-1, -1) ' -135度
Debug.Print GetAngleDegrees(1, -1) ' -45度

■ 6. 単振動や物理モデルでの利用

逆三角関数は、物理モデルの逆計算にもよく使われます。たとえば、斜面上の角度から物体の加速度などを逆算する際などです。

Dim slopeAngle As Double
Dim height As Double: height = 3
Dim base As Double: base = 4

slopeAngle = Atn(height / base)
MsgBox "斜面の角度は約 " & slopeAngle * 180 / 3.14159265358979 & " 度です。"

■ 7. 関連関数

関数説明
Sin(number)正弦(sine)関数
Cos(number)余弦(cosine)関数
Tan(number)正接(tangent)関数
Atn(number)逆正接(arctangent)関数
Sqr(number)平方根
Abs(number)絶対値
Round(number, digits)四捨五入

■ 8. 注意点

● 単位の違い

Atn の戻り値はラジアンです。角度(度)に変換しないと、誤解を招きやすいため注意が必要です。

' 誤解しやすい例
MsgBox Atn(1) ' 出力: 0.7854 ←ラジアン
' 正しい角度表示
MsgBox Atn(1) * 180 / 3.14159265358979 ' 出力: 45度

● Atn2が無い(象限の処理が必要)

他の言語にある Atan2(y, x) 関数が VBA には存在しないため、手動で処理する必要があります。


■ 9. まとめ

VBA の Atn 関数は、逆タンジェント(arctangent)を求めるための関数であり、入力された数値 x に対して tan(θ) = x を満たす角度 θ をラジアン単位で返します。

特に、三角関数の逆計算、ベクトルの角度計算、直角三角形の角度計算、グラフィックにおける方向判定などに有用です。


✅ 要点まとめ

  • Atn(number)tan(θ) = number のときの θ(ラジアン)を返す
  • 結果は ラジアン単位(度に変換するには × 180 / π
  • 象限を考慮するには自前で処理が必要
  • ベクトル角度の算出、グラフィック描画、物理計算などで利用
  • SinCosTan と合わせて使用することで応用範囲が広がる
タイトルとURLをコピーしました