관리 메뉴

드럼치는 프로그래머

[DirectX] 선형대수의 기초 - 벡터(vector) 본문

★─Programing/☆─DirectX

[DirectX] 선형대수의 기초 - 벡터(vector)

드럼치는한동이 2010. 2. 17. 13:57

= 벡터(vector) =

 

스칼라(scalar) : 하나의 실수값

벡터(vector) : 여러개의 실수들을 의미 있는 순서로 묶어둔 것

  => 3차원 공간에서는 보통 3개의 실수를 묶고 이를 3차원 벡터라고 한다.

 

..... a, b, c 는 스칼라 / u, v, w는 벡터로 표현....

 

벡터에 정의된 두개의 연산

- 두 벡터의 덧셈연산 : 두 벡터의 각 원소끼리의 덧셈으로 새로운 벡터를 만드는 연산

- 벡터와 스칼라의 곱셈연산 : 스칼라를 벡터의 각 원소에 곱하여 새로운 벡터를 만드는 연산

 

벡터는 크기와 방향의 의미를 가진다.

벡터의 덧셈에서는 결합법칙과 교환법칙이 성립한다.

0 벡터는 모든 원소들이 0인 벡터 (0,0,0)이다.

길이가 1인 벡터는 단위벡터이다.

두 벡터를 내적하면 그 결과는 스칼라이다.

두 벡터의 내적이 0인 경우에 두 벡터가 직교(orthogonal)한다고 한다.

 

 

벡터의 해석

수학적 의미에서의 벡터란 매우 일반적인 용어이다.

 

직관적인 이해를 위해서 3차원 공간상에서 한 벡터 u를 생각해보면,

u가 존재하는 3차원 공간이 정의되어야 하고,

3차원 공간과 같은 어떤 벡터공간을 만드는,

서로 선형독립인 벡터들을 기저(basis)라고 한다.

3차원 공간의 경우 한 기저는 벡터 3개의 집합이다. 동일 공간을 만드는 기저는 여러개가 존재한다.

가장 흔히 사용되는 기저는 표준기저(standard basis)이다.

표준기저는 { (1,0,0), (0,1,0), (0,0,1) }이다.

 

공간상의 모든 벡터들은 기저의 선형조합으로 표현될 수 있다.

3차원 공간의 한 기저의 세 벡터들을 x, y, z라고 하면,

(이 기저 벡터들이 꼭 표준기저일 필요도 없고 서로 직각일 필요도 없다.)

한 3차원 벡터 u가 세 기저 벡터에 의해 u = ax + by + cz로 표현된다면,

벡터 u의 좌표를 u = (a, b, c)라고 정의한다.

 

일반적으로 기저의 벡터들은 서로 직각일 필요도 없고 단위벡터일 필요도 없다.

그러나 그래픽에서 주로 사용되는 기저는 모든 기저 벡터들이 서로 직교하면서 또한 단위길이인

정규직교기저(orthonormal basis)를 사용한다. 정규직교기저의 대표적인 예가 표준기저이다.

 

벡터 u의 좌표를 u = (a, b, c)라고 하면 a는 첫 번째 기저 벡터에 대한 계수이다.

첫 번째 기저 벡터를 x라고 한다면 x방향으로의 좌표값 a = u·x 로 얻을 수 있고,

x방향으로의 성분 벡터는 (u·x)x로 얻을 수 있다.

 

이런 내적의 활용은 기저 벡터뿐만 아니라 임의의 벡터에 대해서도 적용된다.

 

한 벡터 v를 u방향으로 직교투영한 벡터 v' 를 구해보면,

u가 단위벡터라면 간단하게 v' = (v·u)u로 구해진다. u가 단위벡터가 아니라면 아래와 같다.

            v·u

     v' = ---- u

            u·u

두 벡터 u와 v의 외적은 w = u * v 라고 표기하고 새로운 백터 w를 만든다.

 

외적으로 만들어진 벡터 w는 방향은 두 벡터 u와 v에 모두 수직인 방향이고,

왼손으로 u에서 v를 휘감을때 엄지 손가락이 향하는 방향이다.

외적의 크기는 ||w|| = ||u|| ||v|| sinΘ 이며 여기서 Θ는 u와 v의 각도이다.

따라서 u와 v가 평행한 벡터라면 외적은 0벡터가 된다.

외적은 교환법칙이 성립하지 않으며 u * v = -v * u 을 만족한다.

 

출처 : DirectX 10을 통한 3차원 게임 프로그래밍(박종승 저)


Comments