VB :: Lecture & TIPs

[VB.NET] ArcTan 아크탄젠트 함수에서 ArcCos 아크코사인, ArcSin 아크사인 이끌어내기

Visual Basic (비주얼베이직) 에서는 기본적으로 탄젠트의 반대함수인, 역탄젠트, 다시 말해 ArcTan (아크 탄젠트) 함수를 제공하고 있습니다.

이는 Visual Basic (비주얼베이직) 코드 상에서 Math.Atan() 과 같이 사용할 수 있는데요, 이번 게시글에서는 ArcTan (아크 탄젠트) 함수를 이용해서 ArcCos (아크 코사인), ArcSin (아크 사인)을 이끌어내는 과정을 이해해보고, Visual Basic 의 함수로 변환한 것을 끝으로 마쳐보도록 하겠습니다.

먼저, 단위 원을 그려서 이해해볼까요?

 

 

원 위의 임의의 지점 P 를 타점하면 원점과 점 P 사이의 길이는 원의 반지름과 같으므로, 1 이 됩니다.

Cos (코사인)과 Sin (사인) 삼각비는 수학적으로 다음과 같이 정의되어 있습니다.

 \cos\theta = x / r

 \sin \theta = y / r

이 때,  r = 1 이므로,
위 상황에서는

\cos \theta = x

\sin \theta = y

로 볼 수 있습니다.

일단, 삼각함수의 역함수라 함은 ArcCos (아크 탄젠트) 함수는 \cos \theta \to \theta, ArcSin (아크 사인) 함수는 \sin \theta \to \theta, ArcTan (아크 탄젠트) 함수는 \tan \theta \to \theta 를 의미하는 것입니다.

ArcTan (아크 탄젠트) 함수 사용이 가능한 상황이고, ArcCos (아크 코사인) 를 구해야 한다면 \sin \theta 값을 알아낸 후, \tan\theta = \sin\theta / \cos\theta 에 의해 ArcTan (아크 탄젠트) 값을 구해 낼 수 있을 것입니다.

이는, 다시 피타고라스 정리에 의해 위에서 \sin \theta\sin^2 \theta = 1 - \cos^2 \theta 가 되므로, y 값은 \sqrt{1-\cos^2\theta} 로 구할 수 있을 것입니다.

이제 구해진 y 값으로 기울기 (탄젠트) 값을 구해 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 일 경우의 코드도 수정해주셔야 정상적으로 구현됩니다!

고맙습니다!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: