- 삼각비
삼각비는 직각 삼각형에서 각 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값에 거리를 곱해주면 된다.
'Develoment > Math' 카테고리의 다른 글
[유니티] 벡터의 내적 (0) | 2022.04.26 |
---|---|
[유니티] 삼각함수를 이용해 진자운동 구현하기 (2) | 2021.10.02 |
[유니티] 구면좌표계를 이용해 3D 카메라 좌표 구하기. (0) | 2021.04.16 |