Javascript에서 삼각함수 계산하기

Java Script

Language :

안녕하세요 Lovefield입니다.

최근 삼각함수를 쓸 일이 있었습니다. 화면에 렌더링 된 조건을 변경해야 하는데 회전율이 들어간 값을 계산해야 했습니다. 이번 글은 자바스크립트에서 삼각함수를 사용하는 법을 작성해 보려 합니다.

위와 같은 직각 삼각형이 있다고 가정해 봅시다. 어떤 값을 아느냐에 따라 계산식이 달라집니다.순서대로 공식을 세워봅시다.

1. 각도 A와 밑변의 길이 a를 알고 있는 경우
높이 b와 빗변 c를 구하는 식은 다음과 같습니다.

빗변 c를 구하는 공식 : a / Math.cos((A / 180) * Math.PI)
높이 b를 구하는 공식 : a * Math.tan((A / 180) * Math.PI)

2. 각도 A와 높이 b를 알고 있는 경우
밑변 a 와 빗변 c의 길이를 구하는 식은 다음과 같습니다.

밑변 a를 구하는 공식 : b / Math.tan((A / 180) * Math.PI)
빗변 c를 구하는 공식 : b / Math.sin((A / 180) * Math.PI)

3. 각도 A와 빗변 c를 알고 있는 경우
밑변 a 와 높이 b의 길이를 구하는 식은 다음과 같습니다.

밑변 a를 구하는 공식 : c * Math.cos((A / 180) * Math.PI)
높이 b를 구하는 공식 : c * Math.sin((A / 180) * Math.PI)

4. 빗변 c와 높이 b를 알고 있는 경우 밑변 a를 구하려면
각도 A를 먼저 알아낸 이후 2, 3번의 공식을 사용하면 됩니다.

각도 A를 구하는 공식 : (Math.asin(b / c) * 180) / Math.PI

5. 빗변 c와 밑변 a를 알고 있는 경우 높이 b를 구하려면
각도 A를 먼저 알아낸 이후 1, 3번의 공식을 사용하면 됩니다.

각도 A를 구하는 공식 : (Math.acos(a / c) * 180) / Math.PI

6. 밑변 a와 높이 b를 알고 있는 경우 빗변 c를 구하려면
각도 A를 먼저 알아낸 이후 1, 2번의 공식을 사용하면 됩니다.

각도 A를 구하는 공식 : (Math.atan(b / a) * 180) / Math.PI

각도 B의 경우는 삼각형의 특징을 이용하면 구할 수 있습니다. 삼각형 내각의 총합은 항상 180도를 유지합니다. 그러므로 각도 A를 알고 있는 1, 2, 3의 경우 단순히 90 - A를 하면 됩니다. 4, 5, 6의 경우는 각도 A를 구한 이후 90 - A를 하면 됩니다.

1, 2, 3번의 공식을 사용할 때 주의할 점이 있습니다. 삼각함수에는 특별한 각이 존재하며 각에 따라 사인, 코사인, 탄젠트의 값이 고정되어 있습니다. 고정된 값은 다음과 같습니다.

30도인 경우
- 사인 = 1 / 2
- 코사인 = Math.sqrt(3) / 2
- 탄젠트 = 1 / Math.sqrt(3)

45도인 경우
- 사인 = Math.sqrt(2) / 2
- 코사인 = Math.sqrt(2) / 2
- 탄젠트 = 1

60도인 경우
- 사인 = Math.sqrt(3) / 2
- 코사인 = 1/ 2
- 탄젠트 = Math.sqrt(3)

이 글에서 사용한 자바스크립트 Math 메서드 설명
- Math.cos = 코사인값을 반환합니다. 라디안값을 인자로 넣어야 합니다.
- Math.sin = 사인값을 반환합니다. 라디안값을 인자로 넣어야 합니다.
- Math.tan = 탄젠트값을 반환합니다. 라디안값을 인자로 넣어야 합니다.
- Math.acos = 라디안값을 반환합니다. 코사인값을 인자로 넣어야 합니다.
- Math.asin = 라디안값을 반환합니다. 사인값을 인자로 넣어야 합니다.
- Math.atan = 라디안값을 반환합니다. 탄젠트값을 인자로 넣어야 합니다.
- Math.PI = 원주율 값을 반환합니다.
- Math.sqrt = 루트 값입니다. Number를 인자로 넣으면 루트가 붙은 값을 반환합니다. ex) Math.sqrt(4) // 2
- 라디안 값 계산식 = (각도 / 180) * Math.PI
- 라디안 값 역 계산식 = (라디안 * 180) / Math.PI
- 라디안 이란? 각도를 표현하는 방법중 호도법(호의 길이로 각도를 표현하는 방법)에 대한 값입니다.

Lovefield

Web Front-End developer

하고싶은게 많고, 나만의 서비스를 만들고 싶은 변태스러운 개발자입니다.