42Seoul/Cub3D

[Cub3D] Vector 란?

  • -
728x90

수학, 과학에서 벡터는

물리학과 공학에서 방향과 크기,

선형대수학에서 벡터 공간의 원소,

기하학에서 크기와 방향을 갖고 있는 개념을 수학적으로 표현한 것

 

컴퓨터에서 벡터는

화상의 표현 요소로서의 방향을 지닌 선,

동적 배열 자료구조,

기계 학습 분야에서 입력 데이터를 표시하는 방법

 

cub3d에서 player의 이동과 시야를 위해 기하학과, 컴퓨터 화상의 표현요소로 사용하는 벡터의 개념을 이용할 것이다.  

 

 

기하학에서 벡터는 시점(tail)부터 종점(head)까지 그은 반직선(방향을 갖는 직선)을 의미한다.

좌표계로 가져오면 아래와 같은 그림이 된다.

시점이 (0,0), 종점이 (a1, a2), 크기 a인 벡터이다. 이때 크기 a는 피타고라스 정리로 구할 수 있다.

 

모든 벡터는 기준이 되는 벡터로 표현이 가능한데, 이것을 단위 벡터(Unit Vector)라고 부른다.

 

'단위'란 수학이나 과학에서 많이 이야기하는데 어떤 값을 표현하는데 있어서 기준이 되는 값들이다.

 

예를 들면 단위 시간동안 이동할 수 있는 거리라는 말이 주어지면 (문제마다 다르겠지만) 1초, 1분, 1시간 처럼

표현이 가능하다. 그리고 단위 시간동안 이동할 수 있는 거리는 속력을 의미한다.

 

다시 돌아와서 단위 벡터는 크기가 1인 벡터를 의미하는데 중요한건 좌표가 아니라 크기가 1이라는 것이다.

 

모든 벡터를 단위 벡터로 표현할 수 있다. 즉, 단위 벡터의 실수배가 일반 벡터라는 것이다.

벡터에는 방향이라는 개념이 있다고 앞서 말했다.

일반 벡터가 단위 벡터로 표현된다는 것은 단위 벡터가 벡터의 방향을 의미하는 것이다.

 

별것 아닌것같은 내용이지만 벡터에 있어서 매우 중요하다.

단위 벡터는 굉장히 다양하게 사용되는데 하나 예를 들자면 오브젝트가 향하는 방향을 알아내서 다른 오브젝트로 이동하게 할 때 사용된다.

복잡한 계산 필요 없이 단위 벡터만 있으면 쉽게 처리할 수 있다.

 

벡터를 코드로 작성해보자.

위와 같이 벡터의 정보를 담는 구조체와 새로운 벡터를 생성하는 함수를 만들자.

여기서 zero vector(제로 벡터, 영벡터)는 모든 성분이 0인 벡터를 의미한다. 제로 벡터는 주로 벡터를 초기화 해줄 때 많이 사용한다.

unit vector(단위 벡터)는 x축의 양의 방향으로 방향을 갖는 단위 벡터이다.

 

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.