신입 팀원들을 갈구는 재미에 코드 리뷰해주면서 태클걸다가 마침 얘기가 나온 것인데... 블로그에 한번 옮겨봤습니다.


UI 또는 드로잉 클래스개발시 삼각함수는 매우 다양한 곳에 쓰입니다.

그런데 개발시에 쓰이는 코드는 일반 수학에서 쓰이는 것과 조금은 다릅니다. 보통 수학에서 θ 각도 상에 선분의 길이가 radius 이라면 좌표의 x 값은 cos(θ) * radius, y 값은 sin(θ) * radius 라고 합니다.


플래시에서 삼각함수를 쓰려면  

x = Math.cos(θ * Math.PI / 180) * radius
y = Math.sin(θ * Math.PI / 180) * radius


라고 씁니다...


바로 θ * Math.PI / 180 이녀석이 차이가 생기는데, 라디안 값으로 변환시키는 거라고 하죠... 하지만 그냥 외워서 쓰고있지, 왜 Math.PI / 180 을 각도에 곱해야 라디안 값으로 변환되는지 모르더군요...



아시다시피 산수(사칙연산)을 하려면 숫자로 해야합니다... 아 표현이 조금 틀렸군요... 숫자로 된 값을 결과로 얻으려면 숫자로 계산을 해야 합니다... 당연한 소리겠죠...

하지만 각도는 수(상수, 정수, 무리수 등...)의 범주에서 벗어납니다... 숫자로 된 결과값을 받을 수 없단 이야기입니다.


그럼 각도를 숫자로 변환시켜야 하는데 그 변환한 결과값을 호도각 / 라디안 이라고 합니다. 그럼 어떻게 변환하느냐 하는 것이 남아있습니다.


각도란 0도에서부터 360도까지 원을 한바퀴 돌린 것이겠죠... 그럼 한바퀴 돌린 것이 숫자로 떨어지는 것은 머가 있는가 찾아보니 바로 원의 둘레인 2πr 입니다. 말씀드렸듯 0도에서 한바퀴 돌린것도 각도요... 둘레를 구하기 위해 한바퀴 돌린 것또한 2πr 이니까요...

요컨데 반지름이 1이라면 다음과 같은 항등식이 성립한다는 말입니다.

 θ : 360 = radian : 2π


radian 을 구하기 위해 양변을 곱해주면,

 θ * 2π = 360 * radian


360 으로 양변을 나눠주면,

radian =  θ * 2π / 360


 2πr / 360 의 분자와 분모를 2로 나눠주면,

radian =   θ * π / 180


가 성립하는 셈입니다...

이미 답은 나왔죠? 이렇게 나오는 값에 반지름을 곱해주면 여러분이 원하는 위치값이 나오는 겁니다. 알고보면 굉장히 쉬운 원리입니다


뭐, 사실 이런 원리 같은거 모르고 외워서 써도 개발하는데는 크게 문제 될 것 없겠지만... 그래도 알면 좋잖아요...

 


Posted by 미나토
: