본문 바로가기
IT 기술/Direct3D

Direct3D 벡터 요약_4일차

by 썬's 2023. 1. 15.

안녕하세요 이번 시간에는 1-3일 차 기간에 배운 벡터를 요약해 보는 시간을 가지겠습니다.

이제 조금 벡터에 대해 친숙해 지셨을까요?? ㅎㅎ

저의 티스토리 블로그 목적은 여러분들께 제가 현업에서 사용한 개념을 보다 쉽게 가르쳐드리기 위함입니다.

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


Direct3D 벡터 요약

벡터는 크기와 방향을 가지며, 위치와 속도 힘과 같은 물리량을 나타내는 데 사용합니다.

그리고 이러한 위치와 속도 힘과 같은 물리량을 벡터값 수량이라 합니다.

벡터를 기하학적인 모양으로 나타내면 지향 선분으로 표현합니다. 

 

Direct3D에서 벡터는 2차원 벡터(x, y 축)와 3차원 벡터(x, y, z)를 나타낼 수 있습니다. 3d이기 때문에 2차원 벡터까지 나타낼 수 있습니다. 그리고 왼손좌표계를 사용합니다. 이 좌표상에서 벡터는 반드시 정수값을 가지지는 않기 때문에 float과 double형 등의 부동소수점 형으로 나타냅니다. 이러한 값들은 프로그래밍 언어를 공부하시면 배우실 것입니다.

 

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

두 벡터 u = (ux, uy, uz), v = (vx, vy, vz)와 스칼라 값인 k라는 벡터가 있다고 가정해 보겠습니다.

여기서 스칼라 값인 k라는 벡터는 방향을 가지지 않고 크기만 가진 벡터를 말합니다(1일차 참조).

  • 벡터의 덧셈 : u + v = (ux + vx, uy + vy, uz + vz)
  • 벡터의 뺄셈 : u - v = (ux - vx, uy - vy, uz - vz)
  • 벡터의 스칼라 곱셈 : ku = (kux, kuy, kuz) 또는 kv = (kvx, kvy, kvz)

Direct3D에서 벡터의 내적과 외적 그리고 길이를 구하는 공식은 다음과 같습니다.

여기서 두 벡터가 이루는 각의 크기가 세타값일 때 내적이라 하고, 두 벡터를 외적 했을 때 새로운 벡터가 결과값으로 나오면 외적이라 합니다.

즉, 그냥 쉽게 말해 내적의 결과 값은 스칼라 값이고 외적의 결과 값은 또 다른 벡터라고 이해하시면 됩니다.

벡터의 크기(길이)는 각 성분을 제곱한 결과를 다 더해 이를 루트 처리 해주시면 됩니다.

  • 벡터의 크기(길이) : ||u|| = √x2 + y2 + z2
  • 벡터의 내적 : uv = uxvx + uyvy + uzvz
  • 벡터의 외적 : u x v = (uyvz - uzvy, uzvx - uxvz, uxvy - uyvx)

Direct3D에서 벡터의 위치를 나타내는 벡터를 위치벡터라 합니다.

이 위치벡터는 점 형태로 좌표계에서 표현합니다. 그리고 크기와 방향을 가지지 않는 단순한 점 형태입니다.

 

Direct3D에서 벡터를 효율적으로 계산하고 조작하기 위해서는 XNA Math 라이브러리를 사용합니다. 이는 Directx에서 지원해주는 수학 라이브러리로 벡터의 연산이 가능합니다. XNA Math 라이브러리는 XMVECTOR 클래스를 사용합니다. 이 클래스 자료 멤버에 대해서는 XMFLOAT을 사용하되 XMVECTOR와 XMFLOAT을 적절히 변환해 사용합니다.

이러한 변환은 여러 적재 함수와 저장 함수들을 사용해 변환합니다.


오늘은 Direct3D 상에 중요한 개념 중 하나인 벡터를 요약해 보는 시간을 가졌습니다.

아무래도 "요약"이다 보니 생략된 부분이 없지아나 있습니다.

이에 대한 더 자세한 내용은 1-3일차 내용을 참고해 주시는 것을 추천드립니다.

다음 시간에는 벡터와 더불어 중요한 개념인 행렬에 대해 알아보겠습니다.

긴 글 읽으시느라 고생 많으셨습니다~~

 

 

 

 

 

댓글