[게임 수학] #4 삼각함수

송칭·2023년 12월 4일

게임 수학

목록 보기
4/9

삼각함수

덧셈과 곰셈으로 벡터의 이동을 표현할 수 있었지만 벡터의 회전의 경우는 삼각함수가 필요하다.


sinθ=bcsin\theta = \frac{b}{c}
cosθ=accos\theta = \frac{a}{c}
tanθ=batan\theta = \frac{b}{a}

cc의 길이가 1이라고 가정하면, sinθ=bsin\theta = b, cosθ=acos\theta = a 가 된다.
따라서 반지름이 1인 원을 구성하는 점의 좌표는 (cosθ,sinθ)(cos\theta, sin\theta)로 나타낼 수 있다.

만일 여기서 반지름을 1이 아닌 rr로 설정하면 반지름이 r인 원을 구성하는 점의 좌표는 (rcosθ,rsinθ)(r*cos\theta, r*sin\theta)가 된다.

피타고라스의 정리에 따라 하나의 공식을 도출할 수 있는데, 이는 다음과 같다.

sin2θ+cos2θ=1sin^2\theta+cos^2\theta = 1

삼각함수의 성질

sinsin함수와 coscos함수는 다음과 같은 성질이 있다.

sinsin함수와 coscos함수는 1sinθ11\le sin\theta \le-1, 1cosθ11\le cos\theta \le-1의 범위를 갖는다.
sinsin함수와 coscos함수는 360360^{\circ}를 주기로 반복된다.
sinsin함수 그래프는 원점 대칭, coscos 함수는 yy축 대칭을 이룬다. 이를 통해 아래의 성질을 도출할 수 있다.
sin(θ)=sin(θ)sin(-\theta) = -sin(\theta)
cos(θ)=cosθcos(-\theta) = cos\theta

tantan함수는 다음과 같은 성질이 있다.

tanθ=sinθcosθtan\theta=\frac{sin\theta}{cos\theta}
분모가 coscos함수인데, 분수식에서 분모가 0이 되어서는 안되므로 coscos함수가 0이 되는 9090^{\circ} 마다 tantan함수는 존재하지 않는다. (90-90^{\circ}, 270270^{\circ} 등)

삼각함수의 덧셈정리

sin(a+b)=sinacosb+cosasinbsin(a+b)=sina*cosb+cosa*sinb
cos(a+b)=cosacosbsinasinbcos(a+b)=cosa*cosb-sina*sinb

호도법

호의 길이로 각도를 표현하는 방법으로 호도법으로 표현하는 각의 크기를 radrad라고 한다.
radrad은 각도에 대응하는 호의 길이를 원의 반지름으로 나눈 값이다.

180180^{\circ}에 해당하는 반지름 1의 반원의 호 길이가 π\pi이므로, π(rad)=180\pi(rad)=180^{\circ}가 성립한다.
1(rad)1(rad)은 호의 길이가 1일 때, 생기는 부채꼴의 각도 180π{\frac{180}{\pi}}^{\circ}이다.

벡터의 회전

회전은 x,yx, y값이 모두 영향을 받기 때문에 계산이 어렵다.
실벡터공간 R2\mathbb{R}^2e1=(1,0),e2=(0,1)e_1 = (1,0),e_2 = (0,1)의 선형 결합으로 표현된다. R2\mathbb{R}^2θ\theta만큼 회전하면 표준기저 e1,e2e_1,e_2는 다음과 같은 e1,e2e'_1,e'_2로 변한다.

e1=(cosθ,sinθ),e2=(sinθ,cosθ)e'_1 = (cos\theta,sin\theta), e'_2 = (-sin\theta,cos\theta)

따라서, 만일 벡터 v=e1+e2\overrightarrow{v}=e_1+e_2라고 두면, v\overrightarrow{v}θ\theta만큼 회전한
v=(cosθ,sinθ)+(sinθ,cosθ)\overrightarrow{v'}=(cos\theta,sin\theta)+(-sin\theta,cos\theta)가 되므로
v=(cosθsinθ,sinθ+cosθ)\overrightarrow{v'}=(cos\theta-sin\theta,sin\theta+cos\theta)이다.

보다 일반적인 벡터 v=(x,y)\overrightarrow{v}=(x,y)xe1+ye2x*e_1+y*e_2이고,
v=(x,y)=xcosθysinθ,xsinθ+ycosθ)\overrightarrow{v'}=(x',y')=xcos\theta-ysin\theta,xsin\theta+ycos\theta)로 일반화된다.

x=xcosθysinθx'=xcos\theta-ysin\theta
y=xsinθ+ycosθy'=xsin\theta+ycos\theta

삼각함수의 역함수

벡터의 좌표에서 반대로 회전각도를 구하려면 삼각함수의 역함수가 필요하다. 전단사함수만이 역함수가 존재하는데, sin,cossin,cos함수는 전단사함수가 아니다. 이때 공역의 범위를 [1,1][-1,1]로, 정의역의 범위를[90,90][-90^{\circ},90^{\circ}]으로 제한하면 sin,cossin,cos함수를 한정적으로 전단사함수로 만들 수 있다.

tantan의 경우, 9090^{\circ}마다 무한대로 발산하므로 90,90-90^{\circ},90^{\circ}은 정의역이 존재하지 않는다. 따라서, 정의역을 (90,90)(-90^{\circ},90^{\circ})으로 제한하면 전단사함수가 된다.

정의역과 공역을 제한하면 각 삼각함수들은 전단사함수의 성질을 띄어 역함수가 존재할 수 있다. 이를 각각 표현하는 함수는 다음과 같다.

sin1x=arcsin(x)sin^{-1}x = arcsin(x)
cos1x=arccos(x)cos^{-1}x = arccos(x)
tan1x=arctan(x)tan^{-1}x = arctan(x)

arctanarctan의 경우 벡터의 각도를 구하는데 주로 사용된다. v=(x,y)\overrightarrow{v'}=(x',y')이라고 할 때, tantan함수값을 yx\frac{y'}{x'}를 통해 구한 뒤, 이를 arctanarctan함수에 넣으면 벡터의 각도를 찾아낼 수 있다.

profile
게임 클라이언트

0개의 댓글