関数 逆三角関数x-y座標のアークタンジェントを返しますAtan2無使用
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
Function Atan2VBversion(x As Double, y As Double) As Double '********************************************************** '逆三角関数x-y座標のアークタンジェントを返しますAtan2無使用 '********************************************************** '戻り値の角度は度 '引数x:x座標を指定 '引数y:y座標を指定 '※エクセルWorksheetFunctionAtan2無使用 Dim vPI As Double, At2 As Double vPI = 4 * Atn(1) '円周率(π) If x > 0 Then At2 = Atn(y / x) ElseIf x < 0 Then At2 = Sgn(y) * (vPI - Atn(Abs(y / x))) ElseIf y = 0 Then At2 = 0 Else At2 = Sgn(y) * vPI / 2 End If '==================================== 'ラジアン値が必要な場合は削除 | 'ラジアンからディグリー(角度)を求る | At2 = (180 / vPI) * At2 ' | '==================================== Atan2VBversion = At2 End Function Function Atan2XLSversion(x As Double, y As Double) As Double '********************************************************** '逆三角関数x-y座標のアークタンジェントを返します '********************************************************** '戻り値の角度は度 '引数x:x座標を指定 '引数y:y座標を指定 '※エクセルWorksheetFunctionAtan2使用 Dim At2 As Double At2 = Application.WorksheetFunction.Atan2(x, y) '==================================================== 'ラジアン値が必要な場合は削除 | 'ラジアンからディグリー(角度)を求る | At2 = Application.WorksheetFunction.Degrees(At2) ' | '==================================================== Atan2XLSversion = At2 End Function Private Sub test() Debug.Print Atan2VBversion(10, 15) Debug.Print Atan2XLSversion(10, 15) ' 56.3099324740202 ' 56.3099324740202 End Sub |
Atan2
|
Atn 関数
|
Sgn 関数
|