<개인공부>/[C언어, C++]

[C언어/C++] 삼각함수 sin, cos, tan 함수 설명 및 예제 (라디안 포함)

사용자 BlockDMask 2020. 11. 26. 00:30
반응형

안녕하세요. BlockDMask 입니다.
오늘은 C언어와 C++에서 사용할 수 있는 삼각함수 sin, cos, tan  함수에 대해서 알아보려고 합니다.

다들 학창시절에 삼각함수 사인(sin), 코사인(cos), 탄젠트(tan) 함수에 대해서 다 배우셨죠?
삼각함수가 무엇인지는 생략하고, 
라디안이 무엇인지에 대해서 간단히 알아보고 사인, 코사인, 탄젠트 함수별로 사용법과 예제를 설명하고 넘어가도록 하겠습니다.

<목차>
1. 라디안(radian)이란?
2. sin 함수, cos 함수, tan 함수 설명
3. sin, cos, tan 함수 비교 예제


1. 라디안 (radian) 이란


sin, cos, tan함수는 매개변수로 우리가 일반적으로 사용하는 각 90도 30도 이런 단위를 받지 않고 라디안(radian)이라는 단위를 받습니다.

라디안(radian)은 "호도"라고도 표현하고 기호는 rad 입니다.
우리가 보통 사용하는 1도는 약 57.3도라 합니다. (출처)

우리가 일반적으로 사용하는 30도 60도 90도 180도 이런 표현법을 60분법이라 합니다.
이 60분법으로 표현된 각도를 라디안 값으로 변경하기 위한 공식은 아래와 같습니다.

60분법 숫자를 n이라 하면,  으로 표현할 수 있습니다.

30도 =π/6
60도 =>π/3
90도 => π/2
180도 => π
360도 => 2π

이 공식을 이용해서 우리는 sin, cos, tan 함수에 우리가 원하는 각도의 라디안 값을 집어 넣을 것 입니다.


2. C언어, C++ sin, cos, tan 함수 설명


헤더파일 : C언어 <math.h>, C++ <cmath>

수학 관련함수는 math 헤더에 있다고 생각하시면 편합니다. sin, cos, tan함수는 모두 math 헤더파일에 존재합니다.

2-1) 삼각함수의 원형 부분

double sin(double x);

double cos(double x);

double tan(double x);

매개변수 x : 구하고자 하는 각도의 라디안 값

반환값 : 매개변수로 넣은 라디안 값의 sin, cos, tan 함수 결과값

간단하게 예제를 한번 보면 만약 우리가 x도 값의 sin, cos, tan값을 가지고 싶다고 할때

double a = sin( x * 파이 / 180)
double b = cos( x * 파이 / 180)
double c = tan( x * 파이 / 180)

이렇게 할 수 있습니다. 변수 x는 우리가 원하는 각도를 60분법으로 표현한 값(ex. 45도)이고,
파이는 3.1415926 정도의 값을 집어넣으면 됩니다.
그걸 진짜 코드로 표현하면 아래와 같이 됩니다.
3.1415926의 파이 값은 고정되어있는 값이기 때문에 #define 혹은 const를 이용해서 상수 처리 해주는게 좋을듯 합니다.

2-2) 삼각함수 간단한 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<math.h>
#include<stdio.h>
 
int main(void)
{
    // 파이
    const double PI = 3.1415926;
 
    // 각도
    int x = 45;
 
    // 삼각함수 값 구하기
    double a = sin(x * PI / 180);
    double b = cos(x * PI / 180);
    double c = tan(x * PI / 180);
 
    printf("sin(%d * PI / 180) : %lf\n", x, a);
    printf("cos(%d * PI / 180) : %lf\n", x, b);
    printf("tan(%d * PI / 180) : %lf\n", x, c);
    
    return 0;
}
 
cs

이와 같이 간단하게 삼각함수 값을 구할 수 있습니다.

추가 주저리

** C++에서는 함수 오버로딩을 통해 이름이 같지만 자료형이 다른 삼각함수 타입도 존재합니다.
float sin(float x)
float cos(float x)
float tan(float x)
long double sin(long double x)
long double cos(long double x)
long double tan(long double x)

** C언어에서는 함수 오버로딩이 없기 때문에 각 자료형마다 함수의 이름이 다릅니다.
float sinf(float x)
float cosf(float x)
float tanf(float x)
long double sinl(long double x)
long double cosl(long double x)
long double tanl(long double x)


3. sin, cos, tan 함수 비교 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<math.h>
#include<stdio.h>
 
int main(void)
{
    // 파이
    const double PI = 3.1415926;
 
    double result = 0;
 
 
    // sin, cos 값 (0 ~ 90)
    printf("1. sin, cos값 (0도 ~ 90도)\n");
    for (int x = 0; x <= 90; x += 10) {
        result = (double)x * PI / 180;
        printf("sin(%2d) = %.4lf || cos(%2d) = %.4lf\n", x, sin(result), x, cos(result));
    }
    
 
    // tan 값 (-45 ~ 45)
    printf("2. tan 값 (-45도 ~ 45도)\n");
    for (int x = -45; x <= 45; x += 5)
    {
        result = (double)x * PI / 180;
        printf("tan(%3d) = %.4lf\n", x, tan(result));
    }
 
    return 0;
}
 
cs

결과를 보면 sin함수, cos함수는 0도에서 90도 까지 10도씩 더하면서 값을 구해보았습니다. 값들이 다 잘나오죠?
tan 함수는 -45도에서 45도 까지의 값을 5단위로 구해보았습니다.

학창시절 배우던 sin, cos, tan 값들이 새록새록 떠오르지 않나요?
sin(90)은 1이고 cos이랑 sin은 반대고 등등 아무튼 추억의 삼각함수네요.

이번 삼각함수 포스팅에서 알아둘것은 딱 하나입니다.
원하는 각도 곱하기 파이 나누기 180.

삼각함수 sin, cos, tan의 값을 구할때
원하는 각도 * 3.141592 / 180 을 매개변수로!

이상으로 삼각함수 sin, cos, tan를 C++, C언어에서 사용하는 방법에 대해서 알아보았습니다.
읽어주셔서 감사합니다.

반응형