개발 지식

게임에서의 내적

게임만드는학생 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)
    {
    	// 시야 각 안에 들어옴
    }
	
}

다음과 같이 플레이어의 시야에 물체가 들어왔는지 확인하는데에 사용될 수도 있다. 

'개발 지식' 카테고리의 다른 글

테스트에 관한 짧은 글  (0) 2024.08.07
정규표현식과 예제문제  (2) 2024.07.23
Git 협업을 위한 Branch 정리  (1) 2024.02.27
비트 연산  (0) 2023.07.28
코드 디버깅(debugging)  (1) 2023.07.19