알고리즘 문제 중 내적관련한 문제를 풀고 내적이 어떻게 게임개발에서 사용될까 궁금해져서 찾아보았다.
보통 각도를 구할 때 사용된다.
1. 두 벡터간의 방향
내적은 두 벡터가 서로 같은 방향을 향하는지, 반대 방향을 향하는지, 아니면 직교하는지를 확인하는 데 사용됩니다.
- 두 벡터의 내적이 양수일 경우, 두 벡터는 대체로 같은 방향을 향합니다.
- 두 벡터의 내적이 음수일 경우, 두 벡터는 반대 방향을 향합니다.
- 두 벡터의 내적이 0일 경우, 두 벡터는 직교합니다.
2. 두 벡터간의 각도 계산
내적은 두 벡터 사이의 각도를 계산하는 데 사용됩니다. 벡터 A와 벡터 B의 내적이 다음과 같이 정의됩니다:
struct Vector3 {
float x, y, z;
// 벡터의 길이를 계산하는 함수
float length() const {
return std::sqrt(x * x + y * y + z * z);
}
// 벡터의 내적을 계산하는 함수
float dot(const Vector3& other) const {
return x * other.x + y * other.y + z * other.z;
}
// 두 벡터 간의 각도를 계산하는 함수
float angleBetween(const Vector3& other) const {
float dotProduct = this->dot(other);
float lengths = this->length() * other.length();
return std::acos(dotProduct / lengths);
}
};
int main()
{
Vector3 a(1,0,0); // 플레이어의 방향벡터
Vector3 b(2,4,5); // 물체의 위치벡터
float an = 45;
if(a.angleBetween(b)<an)
{
// 시야 각 안에 들어옴
}
}
다음과 같이 플레이어의 시야에 물체가 들어왔는지 확인하는데에 사용될 수도 있다.
'개발 지식' 카테고리의 다른 글
테스트에 관한 짧은 글 (0) | 2024.08.07 |
---|---|
정규표현식과 예제문제 (2) | 2024.07.23 |
Git 협업을 위한 Branch 정리 (1) | 2024.02.27 |
비트 연산 (0) | 2023.07.28 |
코드 디버깅(debugging) (1) | 2023.07.19 |