VB6・VBA関数メモ:Atn関数
Atn関数についてメモしておきます。
この関数は三角関数の逆正接関数となります。
指定した正接(タンジェント)からラジアンで算出します。
戻り値は「角度」ではなく「ラジアン」なので注意です。
正接(タンジェント)を求めるにはTan関数を使います。
なお、この関数では1〜179度と+180度した場合の値が同じになってしまうので注意です。
180度を超える角度を計算したい場合は、代替の関数を自作するしかなさそうです。(Atn2関数)
この関数は三角関数の逆正接関数となります。
指定した正接(タンジェント)からラジアンで算出します。
戻り値は「角度」ではなく「ラジアン」なので注意です。
正接(タンジェント)を求めるには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) | エラー |
- 2011.12.04 Sunday
- VB・VBA
- 16:25
- comments(0)
- trackbacks(0)
- -
- -