삼각함수란 삼각비 + 호도법 + 함수 이다.
삼각비는 직각삼각형 세 변의 길이의 비는 각에 대한 일정한 관계가 있다.
이러한 일정한 관계를 함수로 나타낸 것이 삼각함수이다.
삼각비에서는 직각삼각형에서 세 변의 길이의 비를 이용했다면
삼각함수에서는 좌표평면 위의 좌표를 이용하는 차이가 있다.
또 삼각비에서는 육십분법으로 나타낸 각을 이용했다면 삼각함수에서는 호도법으로 나타낸 각을 이용한다.
삼각함수의 뜻, 삼각함수의 정의
xy좌표평면에 반지름의 길이가 r인 원을 그리고 원 위의 임의의 점을 P라고 하면
x축 양의 방향을 시초선으로 동경하고 선분OP가 이루는 각을 세타θ라고 할 때,
y/r, x/r, y/x는 θ의 크기에 따라 한 가지로 정해진다.
r != 0 일 때, θ -> y/r , θ -> x/r , θ -> y/x 는 각각 θ에 대한 함수가 된다.
이 함수를 차례로 사인함수, 코사인함수, 탄젠트 함수라고 한다.
sinθ = y/r , cosθ = x/r , tanθ = y/x 로 나타낸다.
그리고 이 세가지를 묶어서 삼각함수라 한다.
역삼각함수
삼각함수는 각을 입력받아 그 각에 대한 삼각비의 값을 출력하는 함수이다.
그것에 대한 역함수, 곧 삼각함수의 값을 입력받아 그 값에 해당하는 각을 출력하는 함수를 생각할 수 있고,
그것을 역삼각함수라 한다.
// 방향벡터 구하기
Vector2 rotation_temp2 = INPUT->GetWorldMousePos() - player.GetWorldPos();
// DirToRadian에 Normalize가 들어가있음.
player.rotation = -Utility::DirToRadian(rotation_temp2);
a의 값을 구하려면 첫째로 마우스의 월드 위치와 플레이어의 월드 위치를 빼야한다.
이러한 코드는 다음과 같다.
Vector2 rotation_temp2 = INPUT->GetWorldMousePos() - player.GetWorldPos();
Vector2를 사용하는 이유는 2D 좌표 평면에서 플레이어와 마우스의 좌표의 거리 a자체가 하나의 벡터이기 때문이다.
// DirToRadian에 Normalize가 들어가있음.
player.rotation = -Utility::DirToRadian(rotation_temp2);
Utility 단어 뜻 유용성
float Utility::DirToRadian(Vector2 Dir)
{
//만약 단위벡터가 아니라면
Dir.Normalize();
return atan2f(Dir.y, Dir.x);
}
atan2 함수는 다른 숫자로 나눈 숫자의 아크 탄젠트를 반환하는 삼각함수이다.
반환 값은 라디안 단위이며 PI/2 와 -PI/2 사이이다.
역삼각함수는 그 각을 알려주고
rotation 도 결국 라디안 각을 사용하니,
그 각도만큼 회전 각이 움직이는 것이다.
참고 사이트 주소
https://mathbang.net/498#gsc.tab=0 삼각함수
https://ko.wikipedia.org/wiki/Dir_(%EB%AA%85%EB%A0%B9%EC%96%B4) DIR
'컴퓨터 프로그래밍 공부' 카테고리의 다른 글
Yaw, Roll, Pitch (0) | 2023.04.20 |
---|---|
CPU와 메모리 (0) | 2023.03.27 |
행렬 (0) | 2023.03.02 |
싱글톤 패턴 + 인스턴스 + 인스턴스화 + 추상화 + 더블 버퍼링 20230227 (0) | 2023.02.28 |
호도법, 미리 컴파일 유의 사항 20230224 (0) | 2023.02.24 |