반응형

 

  • 삼각비

삼각비는 직각 삼각형에서 각 A에 대해 세 변의 길이가 이루는비가 일정한걸 말한다.

위와 같은 삼각형에서 빗변(r), 대변(y), 이웃변(x)로 확인해보자.

여기서 각 A가 동일하면 다음과 같은 값은 모두 동일하게 이루어진다.

 

1. 이웃변(x) / 빗변(r)

2. 대변(y) / 빗변(r)

3. 대변(y) / 이웃변(x)

 

여기서 1, 2, 3번과 같은 값을 각각 cos, sin, tan으로 명명한다. 다시 정리해보면..

 

1. cosA = x / r

2. sinA = y / r

3. tanA = y / x

 

이렇게 정리해 줄 수 있다. 여기까지 이해됐(외웠...)으면 다음으로 넘어가보자.

 


 

  • 극좌표계

일단, 필자와 같은 수포자들이 '각도로 좌표구하기'로 구글링해서 얻을 수 있는 공식에 대해 알아보자. 각도로 좌표구하기를 검색해서 나오는 공식을 보면

 

radian = degree * Mathf.Deg2Rad

(x, y) = (r * Mathf.cos(radian), r * Mathf.sin(radian))

 

위와 같은 공식을 쉽게 볼 수 있게 된다. 이제 이 공식도 이해를 해보자.

위 그림에 있는 B(r, θ)를 극좌표라고 하는데, 원점에서 떨어진 점 P가 있으면 P(r, θ)로 표시한다. (여기서 r은 극(원점)과 점 P를 잇는 직선의 길이, θ는 각 A를 말한다.)

※ 우리가 보통 알고있는 (x, y)좌표는 직교좌표(데카르트(cartesian) 좌표)이다.

 

우리가 알고싶은것은 점 B의 좌표이다. 점 B의 좌표는 직교좌표로 (x, y)이다.

자, 다시 삼각비를 생각해볼때이다. 삼각비에서 우리는

 

1. cosA = x / r

2. sinA = y / r

 

이것을 이용할 것이다. 뭔가 감이 오지 않는가?

 

1. cosθ = x / r ▶ r * cosθ = x

2. sinθ = y / r ▶ r * sinθ = y

 

즉, (r * Mathf.cos(radian) = x, r * Mathf.sin(radian) = y)가 되는것이다!

다시말해 극좌표 (r, θ) 직교좌표 (r * cosθ, r * sinθ)와 같다.

 

※※ 여기서 극좌표 θ는 radian을 이용한 호도법으로 표시하기 때문에, 우리가 일반적으로 쓰는 degree가 아니라 radian으로 바꿔서 사용해야한다.

 

 

결과적으로 코드를 작성해본다면, 아래와 같은 코드로 작성할 수 있다.

private Vector3 ConvertAngleToVector(float _deg)
{
	var rad = _deg * Mathf.Deg2Rad;
	return new Vector3(Mathf.Cos(rad), Mathf.Sin(rad));
}

 

※※ 필자의 경우 극좌표는 단순히 방향을 알려고할때 사용하기 때문에 r값을 굳이 넣지 않고 사용한다.

※※ 거리도 사용할 경우 cos, sin값에 거리를 곱해주면 된다.

반응형

+ Recent posts