본문 바로가기
IT 기술/Direct3D

Direct3D 벡터 개념_1일차

by 썬's 2023. 1. 13.

안녕하세요 이번 시간에는 Direct3D, 즉 컴퓨터 화면 상에서

그래픽과, 충돌처리, 물리시뮬레이션 등의 핵심적인 역할을 하는 벡터에 대해 알아보겠습니다.

※제 수업은 이전주차에서 배운 개념을 재차 설명하지 않습니다※


 

1. 벡터의 개념

벡터(vector)란 크기와 방향을 나타내는 데 쓰이는 개념입니다. 벡터는 크게 다음 3가지를 중심으로 사용합니다. 그리고 이러한 요소들을 벡터값 수량이라고 합니다.

  • 힘 : 특정 방향과 세기
  • 변위 : 한 플레이어의 이동 방향과 거리
  • 속도 : 빠르기와 방향
  • 기타 : 플레이어가 바라보는 방향, 한 다각형이 향한 방향, 광선 이동 방향 및 광선이 반사된 방향

Direct3D에서 벡터는 주로 선분으로 표현합니다.

하단 그림을 보시면 선분의 길이를 벡터의 크기라 보고, 선분 끝의 화살표를 벡터의 방향이라고 합니다.

이 때 벡터의 위치는 크게 중요하지 않습니다.

이 위치가 바뀌어도 벡터의 크기와 방향은 바뀌지 않기 때문입니다.

 

따라서 벡터 u와 v가 있다고 가정했을 때, 이 두 벡터의 길이와 가리키는 방향이 같다면, 

두 벡터의 위치가 달라도 서로 상등하다. 즉 동등하다고 봅니다.

벡터 형태

 


2. 벡터의 좌표계

Direct3D에서 벡터는 컴퓨터 화면 상에 기하학적으로 표현할 수 있습니다.

여기서 기하학이란 그냥 도형과 선분과 같은 형태라고 보시면 됩니다.

이 때문에 벡터는 화면 상의 공간에서 3차원 좌표계를 사용해, 모든 벡터를 표현할 수 있습니다.

여기서 3차원 좌표계란 x, y, z 축으로 이루어진 좌표를 말합니다.

이 좌표상에서 벡터는 반드시 3이나 5와 같이 정수값의 길이를 가지지 않기 때문에 float과 double 등의 부동소수점값으로 표현합니다.

벡터 좌표계

 


3. 벡터의 연산

Direct3D 상에서 무수히 많은 벡터가 있습니다. 이러한 벡터끼리는 연산이 가능합니다.

다음 벡터 u와 v가 있다고 가정해 보겠습니다. 이 두 벡터는 방향과 크기는 동일한 상등 벡터입니다.

즉, 위치만 다를 뿐 방향과 크기는 동일하다는 얘기입니다.

여기서 그 전에 여러분들이 알아두셔야 할 것은 스칼라 값입니다.

이는 벡터가 크기와 방향을 가진 선분이라 했는데 벡터에서 방향을 가지지 않고 크기만 가진 벡터를 스칼라 값이라고 합니다. 즉, 그냥 방향을 가지지 않는 벡터라고 생각하심면 됩니다.

 

u = (ux, uy, uz), v = (vx, vy, vz), k(스칼라 값)
벡터의 덧셈 벡터의 덧셈은 각 축끼리 더합니다.
u + v (ux + vx, uy + vy, uz + vz)
벡터의 스칼라 곱셈 벡터의 곱셈은 스칼라 곱셈으로 합니다.
k가 하나의 스칼라(벡터의 크기)라 했을 때, 다음과 같습니다.
ku = (kux, kuy, kuz)
벡터의 뺄셈 벡터의 뺄셈도 각 축끼리 뺍니다.
u - v = (ux - vx, uy - vy, uz - vz)

 

자 그럼 예시를 들어보겠습니다.

벡터 u = (5, 2, 0.7), v = (2.5, 2, -2), k = 7이라고 하면 결과값은 다음과 같습니다.

여기서 주의할 점은 벡터끼리 꼭 상등해야만 계산이 가능한 것은 아닙니다!!

  • u + v (7.5, 4, -1.3)
  • u - v (2.5, 0, 2.7)
  • ku = (35, 14, 4.9)
  • kv = (17.5, 14, -14)

4. 벡터의 크기와 방향

Direct3D 상에서 벡터는 기하학적인 형태로 봤을 때 주로 선분 형태인 것을 이제 알았습니다.

그리고 벡터의 크기가 선분의 길이, 벡터의 방향이 선분의 화살표 부분이면,

벡터의 크기는 어떻게 표기할까요?? 바로 이중 수직선으로 벡터의 크기를 표기합니다.

 

예를 들어 벡터 u와 v가 있다고 가정했을 때, 벡터 u의 크기는 ||u||이고 벡터 v의 크기는 ||v||입니다.

벡터의 크기를 구하는 공식은 다음과 같습니다.

벡터 크기 공식

벡터의 방향을 알고 싶을 때는 벡터의 길이는 크게 중요하지 않을 수 있습니다.

이럴 때는 벡터의 방향을 구할 때 길이는 단위길이인 1로 맞추는 것이 편리합니다.

벡터의 길이를 단위벡터(단위길이인 1로 맞춤)로 만드는 것을 벡터의 정규화라고 합니다.

이러한 정규화 공식은 다음과 같습니다.

벡터의 정규화 공식


오늘은 Direct3D 상에서의 중요한 개념인 벡터란 무엇인지 알아봤습니다.

그럼 다음 시간에는 벡터의 내적과 외적에 대해 배워보도록 하겠습니다.

 

댓글