개발 지식
게임에서의 내적
게임만드는학생
2024. 7. 29. 13:49
알고리즘 문제 중 내적관련한 문제를 풀고 내적이 어떻게 게임개발에서 사용될까 궁금해져서 찾아보았다.
보통 각도를 구할 때 사용된다.
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)
{
// 시야 각 안에 들어옴
}
}
다음과 같이 플레이어의 시야에 물체가 들어왔는지 확인하는데에 사용될 수도 있다.