関数 三角関数と逆三角関数-逆三角関数

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


'Trigonometric & Inverse Trigonometric Function
'三角関数と逆三角関数

Function TrgYZ_DegreeX(ByVal y As DoubleByVal z As Double _
                , ByRef Dgr As DoubleByRef x As Double)
'************************************************
'逆三角関数-正弦yと正接zから角度と余弦xを算出する
'************************************************
'引数 y:正弦 123.456cmなど
'引数 z:正接 123.456cmなど
'角度:Thetaシータθ∠A
'条件:∟直角三角形
'縦位置(Y座標・正弦)÷斜位置(Z座標・正接)=Sine(サイン・正弦)

Dim vPI As Double
'円周率(π)
vPI = 4 * Atn(1)

Dim ARC As Double
ARC = y / z

Dim ARCsin As Double
ARCsin = Atn(ARC / Sqr(-ARC * ARC + 1))

Dim dblDegree As Double
'ラジアンからディグリー(角度)を求る
dblDegree = (180 / vPI) * ARCsin

Dgr = dblDegree
x = z * Cos(ARCsin)
'x = y / Tan(ARCsin)

'縦位置(Y座標・Sine・サイン・正弦)ARCアーク
'横位置(X座標・Cosine・コサイン・余弦)ARCアーク
'斜位置(Z座標・Tangent・タンジェント・正接)ARCアーク

End Function


Private Sub test_TrgYZ_DegreeX()
    Dim Dgr As Double, x As Double
    Call TrgYZ_DegreeX(14.9982662331051, 18.02775638, Dgr, x)
    Debug.Print Dgr
    Debug.Print x
' 56.3
' 10.0026001668331
End Sub
Option Explicit


'Trigonometric & Inverse Trigonometric Function
'三角関数と逆三角関数

Function TrgXZ_DegreeY(ByVal x As DoubleByVal z As Double _
                , ByRef Dgr As DoubleByRef y As Double)
'************************************************
'逆三角関数-余弦xと正弦zから角度と正弦yを算出する
'************************************************
'引数 x:余弦 123.456cmなど
'引数 z:正弦 123.456cmなど
'角度:Thetaシータθ∠A
'条件:∟直角三角形
'横位置(X座標・余弦)÷斜位置(Z座標・正接)=Cosine(コサイン・余弦)

Dim vPI As Double
'円周率(π)
vPI = 4 * Atn(1)

Dim ARC As Double
ARC = x / z

Dim ARCcos As Double
ARCcos = Atn(-ARC / Sqr(-ARC * ARC + 1)) + 2 * Atn(1)

Dim dblDegree As Double
'ラジアンからディグリー(角度)を求る
dblDegree = (180 / vPI) * ARCcos

Dgr = dblDegree
y = x * Tan(ARCcos)
'y = z * Sin(ARCcos)

'縦位置(Y座標・Sine・サイン・正弦)ARCアーク
'横位置(X座標・Cosine・コサイン・余弦)ARCアーク
'斜位置(Z座標・Tangent・タンジェント・正接)ARCアーク

End Function


Private Sub test_TrgXZ_DegreeY()
    Dim Dgr As Double, y As Double
    Call TrgXZ_DegreeY(10.0026001668331, 18.02775638, Dgr, y)
    Debug.Print Dgr
    Debug.Print y
' 56.3000000000001
' 14.9982662331051
End Sub
Option Explicit


'Trigonometric & Inverse Trigonometric Function
'三角関数と逆三角関数

Function TrgXY_DegreeZ(ByVal x As DoubleByVal y As Double _
                , ByRef Dgr As DoubleByRef z As Double)
'************************************************
'逆三角関数-余弦xと正弦yから角度と正接zを算出する
'************************************************
'引数 x:余弦 123.456cmなど
'引数 y:正弦 123.456cmなど
'角度:Thetaシータθ∠A
'条件:∟直角三角形
'縦位置(Y座標・正弦)÷横位置(X座標・余弦)=Tangent(タンジェント・正接)

Dim vPI As Double
'円周率(π)
vPI = 4 * Atn(1)

Dim ARC As Double
ARC = y / x

Dim Arctan As Double
Arctan = Atn(ARC)

Dim dblDegree As Double
'ラジアンからディグリー(角度)を求る
dblDegree = (180 / vPI) * Arctan

Dgr = dblDegree
z = y / Sin(Arctan)
'z = x / Cos(Arctan)

'縦位置(Y座標・Sine・サイン・正弦)ARCアーク
'横位置(X座標・Cosine・コサイン・余弦)ARCアーク
'斜位置(Z座標・Tangent・タンジェント・正接)ARCアーク

End Function


Private Sub test_TrgXY_DegreeZ()
    Dim Dgr As Double, z As Double
    Call TrgXY_DegreeZ(10.0026001668331, 14.9982662331051, Dgr, z)
    Debug.Print Dgr
    Debug.Print z
' 56.3
' 18.02775638
End Sub


  • はてなブックマークに追加

 

2016年10月01日|[VBサンプルコード]:[関数]