Visual Basic (비주얼베이직) 에서는 기본적으로 탄젠트의 반대함수인, 역탄젠트, 다시 말해 ArcTan (아크 탄젠트) 함수를 제공하고 있습니다.
이는 Visual Basic (비주얼베이직) 코드 상에서 Math.Atan() 과 같이 사용할 수 있는데요, 이번 게시글에서는 ArcTan (아크 탄젠트) 함수를 이용해서 ArcCos (아크 코사인), ArcSin (아크 사인)을 이끌어내는 과정을 이해해보고, Visual Basic 의 함수로 변환한 것을 끝으로 마쳐보도록 하겠습니다.
먼저, 단위 원을 그려서 이해해볼까요?

원 위의 임의의 지점 P 를 타점하면 원점과 점 P 사이의 길이는 원의 반지름과 같으므로, 1 이 됩니다.
Cos (코사인)과 Sin (사인) 삼각비는 수학적으로 다음과 같이 정의되어 있습니다.
이 때, 이므로,
위 상황에서는
로 볼 수 있습니다.
일단, 삼각함수의 역함수라 함은 ArcCos (아크 탄젠트) 함수는 , ArcSin (아크 사인) 함수는
, ArcTan (아크 탄젠트) 함수는
를 의미하는 것입니다.
ArcTan (아크 탄젠트) 함수 사용이 가능한 상황이고, ArcCos (아크 코사인) 를 구해야 한다면 값을 알아낸 후,
에 의해 ArcTan (아크 탄젠트) 값을 구해 낼 수 있을 것입니다.
이는, 다시 피타고라스 정리에 의해 위에서 은
가 되므로,
값은
로 구할 수 있을 것입니다.
이제 구해진 값으로 기울기 (탄젠트) 값을 구해 ArcTan (아크 탄젠트) 에 해당 값을 대입해주면 함수를 구현해볼 수 있겠죠!
Public Function ArcCos(ByVal f As Double) As Double
If f = 1 Then
ArcCos = 0
ElseIf f = -1 Then
ArcCos = Math.Atan(1) * 2
Else
ArcCos = Math.Atan(Math.Sqrt(1 - f ^ 2) / f)
End If
End Function
위와 같이 ArcCos (아크 코사인) 함수를 완성 해 볼 수 있겠습니다.
마찬가지로, Math.Atan(Math.Sqrt(1 – f^2) / f) 를 Math.Atan(f / Math.Sqrt(1 – f^2)) 로 변경해주면 ArcSin (아크 사인) 함수도 완성해볼 수 있습니다.
당연하겠지만, ArcSin (아크 사인) 함수를 만드시려면, f 변수 값이 1 일때와 -1 일 경우의 코드도 수정해주셔야 정상적으로 구현됩니다!
고맙습니다!
