[unity] 유니티 삼각함수에 대해 알아보자 (sin, cos)

2022. 6. 26. 22:05유니티 코딩 기본 개념

본 포스팅에서는 이해를 위한 오류가 포함되어 있습니다.

또한 본 포스팅은 삼각함수가 무엇인지 알고있다는 가정하에 작성되었습니다.

 

 

유니티로 개발을 하다 보면 "삼각함수는 어떨 때 쓰는 거지?" 하는 생각이 들 수 있다.

유니티는 기본적으로 좋은 기능들을 제공하기에 삼각함수를 안 쓰고 기능을 구현할 수도 있지만 삼각함수를 사용하면 더욱 효율적인 코딩을 할 수 있을 것이다.

 

이번 포스팅에서는 유니티의 Sin 함수와 Cos 함수가 무엇인지, 어떻게 활용하면 좋을지 알아보겠다.

 

1. Sin, Cos 함수

 

우선 Sin, Cos 함수는 유니티의 Mathf 구조체 안에 있다.

위 코드를 보자

 

angle이라는 변수에 45를 넣고 그 값을 sin 함수에 넣어서 나온 값을 출력하는 것이다.

 

그런데

이게 뭔지 궁금할 수 있는데 일단 무시하고 나중에 알아보자

 

유니티에서 sin, cos 함수를 사용하면 유니티 엔진에서는 가상의 삼각형이 만들어진다.

이 경우는 sin 함수에 45를 넣었으니

각이 45도 ( 매개변수로 넣은 값 ) 이고 빗변의 길이가 1인 삼각형이 만들어진다.

빗변의 길이가 1인 이유는 유니티가 함수를 그렇게 만들어 놓았기 때문이다. 

 

어쨋든 이 삼각형에서의 Sin 값과 Cos 값을 반환하는것이 Sin, Cos 함수의 전부이다.

 

이게 무슨 의미가 있냐하면

 

이 삼각형에서의 Sin 값은 h / a 이다.

그런데 a ( 빗변 )은 1이기에 h / 1 즉 h 값을 반환하는 것이다.

 

마찬가지로 Cos 값은 w / a  = w 이다.

 

그말인 즉

위 함수는 빗변의 길이가 1이고 각도가 45도인 삼각형의 높이 ( h )를 반환하는 것이고

 

위 함수는 빗변의 길이가 1이고 각도가 45도인 삼각형의 밑변( w )을 반환하는 것이다.

 

그렇다면

이렇게 코드를 작성한다면

x 는 w ( 밑변 )

y 는 h ( 높이 )

 

즉 빗변의 길이가 1이고 각도가 45도인 삼각형의 꼭짓점의 위치를 알아낸 것이다.

 

이 지점

 

이걸 어디에 쓸 수 있냐면

 

 

이런것도 할 수 있다.

( 코드 )

 

 

이런거 말고도 원하는 각도로 움직이게 하고 싶을때도 사용할 수 있을것 같다.

 

아참 까먹은게 있었다.

 

이게 뭔지 아직 알지 못했다.

 

이게 뭔지 알려면 sin, cos 함수의 계산 방식을 알아야 할 것 같은데 자세히는 말고 간단히 설명해 보겠다.

sin, cos 함수가 계산을 할때는 우리가 흔히 쓰는 각도 단위인 도( degree ) 단위를 사용하는게 아니라

호도( radian ) 라는 단위를 사용한다.

 

그렇기에 sin, cos 함수에 값을 넣을때도 넣고싶은 각도를 호도법으로 넣어줘야한다.

 

90° 는 호도값으로 나타내면 대략 1.57079632 정도가 된다.

이는 90 곱하기 0.0174532924 정도 하면 나오는 값이다.

 

슬슬 이해가 될수 있을것이다.

 

그렇다 이건 0.0174532924 라는 상수이다.

 

그렇기에 이것을 넣고자 하는 값에 곱해주는 것이다.

마우스를 가져다 대면 Mathf.Deg2Rad = 0.0174532924  이라고 알려준다.

 

또한 이 값의 이름이 Deg2Rad인 이유는

도(degree)를  호도(radian)로

=  degree to radian

=  deg2rad

사실 참 직관적인 이름이었던 것이다.