1 분 소요

Intro

이번 포스팅에서는 게임제작에서 사용될 수 있는 벡터의 내적과 외적에대해서 알아보고 정리해보았습니다.

기본적으로 벡터란 “크기”와 “방향”을 가지는 물리적 양을 말합니다.

벡터를 통해서 게임내에서 주로 방향, 회전, 충돌감지, 물리연산등 많은곳에서 활용할 수 있습니다.

벡터의 내적(Dot Product)

두 벡터 A와 B의 내적은 다음과 같이 계산됩니다.

image


벡터의 내적을통해서 두 방향벡터의 “내각(사잇각)”을 알아낼 수 있습니다.

image


우리가 사용할것은 코사인값, 즉 두 벡터의 내각에따라 나타나는 -1 ~ 1 의 값입니다.

두 벡터가 이루는 각이 작을수록 값이 1에가까워지고(커짐) 두 벡터가 이루는 각이 클수록 값이 -1에 가까워집니다(작아짐).

image


게임에서는 플레이어의 시선(바라보는 방향 벡터)에 따라 특정 대상이 앞에 있는지, 뒤에있는지를 판별할 수 있습니다.

image

  • 플레이어의 시선(바라보는 방향 벡터)를 중심으로 좌, 우 90도가 넘어가는 순간(뒤에 있는순간) 코사인값은 음수로, 이를 통해 대상이 앞에있는지 뒤에있는지 판별가능.


또한 시야각 내의 물체를 판별하는것도 가능합니다.

image

  • 플레이어의 시야각을 X라고 하면, 플레이어의 시선(바라보는 방향 벡터)와 오브젝트의 위치벡터를 내적하여 얻는 각도가 X/2 보다 작다면 시야 내에 위치, 아니라면 시야 밖에 위치한다는 뜻입니다.
    • X/2 인 이유? 플레이어 시선벡터와 오브젝트의 위치벡터가 이룰수있는 최대각이 X/2 이기때문

벡터의 외적(Cross Product)

두 벡터의 외적은 다음과 같이 계산됩니다.

image

결국 벡터의 외적은 두 벡터가 이루는 평면과 수직이되는 “법선벡터”를 구하는것입니다.

오른손의 법칙이란 손모양을 아래와 같이 했을때, 세 손가락중 두 손가락 방향벡터의 외적은 나머지 한 손가락의 방향벡터라는것입니다.

image


게임에서는 외적을통해 좌, 우를 판별할 수 있습니다.

image

  • 요약
    • 벡터의 내적은 특정 대상과의 앞/뒤 판별
    • 벡터의 외적은 특정 대상과의 좌/우 판별

태그: ,

카테고리:

업데이트:

댓글남기기