[게임수학] 삼각함수

Jaeyoung Ko·4일 전
0

게임 프로그래밍에서 여러 가지 연산을 위해서 이산 수학 지식들은 필수불가분하다.

다양한 알고리즘, 벡터 등등도 있지만 이번 시간은 삼각함수에 대해 간단히 짚어보고자 한다.


삼각함수

빗변, 밑변, 높이로 이루어진 직각삼각형을 가정하고,
세 변 중 두 변에 대해 변에 대한 비율의 값을 통해 Trigonometric Ratio, 즉 삼각비를 구한다.


(1) sinθ = 높이 / 빗변

(2) cosθ = 밑변 / 빗변

(3) tan⁡𝜃 = sin𝜃 / cos𝜃 = 높이 / 밑변



#include <iostream>
#include <cmath>

// pi 값
#define M_PI 3.14159265358979323846

int main() {
    // 각도와 라디안 변환
    double degree = 45.0;
    double radian = degree * (M_PI / 180.0);

    // 삼각함수 계산
    double sinValue = std::sin(radian);
    double cosValue = std::cos(radian);
    double tanValue = std::tan(radian);

    // 출력
    std::cout << "Degree: " << degree << " degrees\n";
    std::cout << "Radian: " << radian << " radians\n";
    std::cout << "sin(" << degree << "°): " << sinValue << "\n";
    std::cout << "cos(" << degree << "°): " << cosValue << "\n";
    std::cout << "tan(" << degree << "°): " << tanValue << "\n";

    // 역삼각함수 계산
    double arcsinValue = std::asin(sinValue) * (180.0 / M_PI);
    double arccosValue = std::acos(cosValue) * (180.0 / M_PI);
    double arctanValue = std::atan(tanValue) * (180.0 / M_PI);

    std::cout << "arcsin(" << sinValue << "): " << arcsinValue << " degrees\n";
    std::cout << "arccos(" << cosValue << "): " << arccosValue << " degrees\n";
    std::cout << "arctan(" << tanValue << "): " << arctanValue << " degrees\n";

    return 0;
}



삼각함수는 주기성을 가지게 되는데, sin x와 cos x의 경우 2 pi, tan x의 경우 pi의 주기를 가진다.

컴퓨터 그래픽스에서,
2D/3D 회전 변환 및
조명, 음영 계산에 사용된다.



역삼각함수

삼각비에 있어서 역연산으로, 위의 삼각함수는 에 대한 변의 길이 비율인 점이었던 반면,
역삼각함수는 변의 길이 비율로부터 을 찾아낸다.

arsin

arccos

arctan

이외에도 arccot, arcsec, arccsc 도 존재한다.

profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글