-
벡터의 내적과 외적을 응용해 왼쪽 오른쪽 판별이러저런 이야기 2019. 12. 19. 10:45
벡터의 외적은 벡터 곱이라 할 수 있으며, 벡터 A와 벡터 B의 외적을 A x B라고 한다 [A cross B]. 외적의 결과는 내적과 달리 벡터가 나오며, A x B [외적 벡터]의 방향은 수학에서는 오른손 법칙을 사용한다. 게임은 엔진이 사용하는 좌표계에 따라 다른데, OpenGL에서는 오른손 법칙, Unity는 왼손 법칙에 따른다. 그리고 외적 벡터의 크기는 두 벡터의 크기에 sinθ를 곱한 값과 같다. [A x B = |A| |B| sin θ] 외적의 특징으로 A와 B 벡터의 외적, AxB는 벡터 A와도 수직이고, 벡터 B와도 수직이다.
캐릭터와 적이 월드 상에 존재할 때 월드 좌표계의 Up 방향 벡터를 U, 캐릭터의 Forward 방향 벡터를 F, 그리고 적과 캐릭터의 위치를 뺀 벡터를 A라고 할 때, 적이 왼쪽에 있는지 오른쪽에 있는지 판별은 Up · (F x A) 를 해서 0보다 크면 오른쪽 0보다 작으면 왼쪽에 존재한다. 먼저 (F x A)를 보자면 캐릭터의 앞 방향 벡터와 캐릭터에서 적을 향하는 벡터를 외적을 하면 두 벡터의 수직인 벡터 F x A 가 나온다. 이 벡터가 월드 좌표계의 Up 방향 벡터와 내적을 하면 나오는 값이 0보다 크다면 예각을 이루고, 0보다 작다면 둔각을 이루기 때문에 왼쪽 오른쪽 판별을 할 수 있습니다.
'이러저런 이야기' 카테고리의 다른 글
점이 삼각형 내부에 있는지 외부에 있는지 판별 (1) 2019.12.19 백스페이스 컬링 (0) 2019.12.19 내적을 이용한 시야 판별 (0) 2019.12.19 평면의 방정식과 d (0) 2019.12.19 벡터의 투영 유도하기 (0) 2019.12.19