VB6・VBA関数メモ:Atn関数

Atn関数についてメモしておきます。

この関数は三角関数の逆正接関数となります。
指定した正接(タンジェント)からラジアンで算出します。

戻り値は「角度」ではなく「ラジアン」なので注意です。

正接(タンジェント)を求めるにはTan関数を使います。

なお、この関数では1〜179度と+180度した場合の値が同じになってしまうので注意です。
180度を超える角度を計算したい場合は、代替の関数を自作するしかなさそうです。(Atn2関数)

概要

Atn(Number As Double) As Double
機能 指定した正接(タンジェント)からラジアンを返す
引数 Number 指定値 Double型
戻り値 計算結果 Double型


三角関数を使用する前に

説明 記述例
円周率を求める関数
※円周率=アークタンジェント(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=√3,辺Y=1の場合)
※tanθ=Y / X
Dim rad As Double, θ As Double
Dim X As Double, Y As Double

X = Sqr(3)
Y = 1

rad = Atn(Y / X)
θ = GetAngle(rad)

Debug.Print θ
30
角度θを求める
(Sin関数Cos関数を使用)
※tanθ=sinθ/cosθ
Dim rad0 As Double, θ0 As Double
Dim rad As Double, θ As Double

θ0 = 30
rad0 = GetRadian(θ0)

rad = Atn(Sin(rad0) / Cos(rad0))
θ = GetAngle(rad)

Debug.Print θ
30


動作検証

説明 記述例 出力
1〜90度と181〜270度、
91〜179度と271〜359度は同じ値が返る
Atn(Tan(GetRadian(1))) 0.017453292519943
Atn(Tan(GetRadian(181))) 0.017453292519943
Atn(Tan(GetRadian(90))) 1.5707963267949
Atn(Tan(GetRadian(270))) 1.5707963267949
Atn(Tan(GetRadian(91))) -1.55334303427495
Atn(Tan(GetRadian(271))) -1.55334303427495
Atn(Tan(GetRadian(179))) -1.74532925199432E-02
Atn(Tan(GetRadian(359))) -1.74532925199433E-02
文字列の数値を指定可能 Atn("2") 1.10714871779409
文字列の数値(16進数)を指定可能 Atn("&H2") 1.10714871779409
文字列の数値(8進数)を指定可能 Atn("&O2") 1.10714871779409
文字列の数値(指数表記)を指定可能 Atn("1E2") 1.56079666010823
Double型の最小値(-1.79769313486231E308)を
下回るとエラー
Atn(-1.79769313486232E+308) エラー
Double型の最大値(1.79769313486232E307)を
上回るとエラー
Atn(1.79769313486232E308) エラー
Nullを指定するとエラー Atn(Null) エラー


コメント
コメントする








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