VioletaBabel

기초 필수 수학 1-1. 벡터 대수 (1) 본문

기본개념/기초 수학
기초 필수 수학 1-1. 벡터 대수 (1)
Beabletoet 2018. 11. 26. 10:49

기초 필수 수학 1. 벡터 대수


[DirectX 12를 이용한 3D 게임 프로그래밍 입문]




1.1 벡터


벡터(Vector) : 크기(Magnitude)와 방향(Direction)을 모두 가진 수량(Quantity)

3차원 벡터의 경우 v = (x, y, z)로 표기할 수 있다. (여기서 x, y, z는 float 또는 double)



1.1.1 벡터와 좌표계

꼬리를 좌표계 원점에 일치시킨 벡터를 '표준 위치에 있는 벡터'라고 한다.


같은 벡터 v라도 기준계(공간, 좌표계라고도 할 수 있다)에 따라 좌표가 다르다. (섭씨에서는 100도, 화씨에서는 212도라 표현하듯 같은 벡터이나 표현 방식이 다른 것)

3차원 컴퓨터 그래픽에서는 여러 기준계를 사용하는 경우가 많으므로 현재 벡터의 좌표가 어떤 기준계에 상대적인지를 기억할 필요가 있다.



1.1.2 왼손잡이 좌표계 vs 오른손잡이 좌표계


Direct 3D는 왼손잡이 좌표계를 사용.

왼손잡이 좌표계는 왼손을 펴서 양의 x축 방향을 가리키고, 손가락들을 90도 구부려 양의 y축 방향을 가리키면 엄지손가락의 방향이 양의 z축.

오른손잡이 좌표계는 오른손으로 같은 것을 하면 됨.

둘은 같은 x,y축에 대해 z축 방향이 반대.



1.1.3 기본 벡터 연산

 두 벡터 u = (ux, uy, uz), v = (vx, vy, vz)가 있다.

 1) ux = vx, uy = vy, uz = vz 면 u = v이다.

 2) u + v = (ux+vx, uy+vy, uz+vz)이다.

 3) k가 스칼라 값일 때, k*u = (k*ux, k*uy, k*uz)이다.

 4) u - v = u + (-1) * v = (ux - vx, uy - vy, uz - vz)이다.

영벡터(zero-vector)는 모든 성분이 0인 벡터로, 0이라 표기한다.

스칼라 곱은 벡터의 길이(크기)를 비례(확대, 축소)하는 것이며, 벡터의 부호를 바꾸는 건 방향을 반대로 뒤집는 것에 해당한다.

u와 v를 점으로 해석할 때, v-u는 점 u에서 점 v로 가는 벡터이며, v-u의 길이는 u에서 v까지의 거리이다.

벡터의 덧셈은 벡터의 꼬리와 벡터의 머리가 줄줄이 맞물리는 식으로 하며, 물리에서 힘을 더해 알짜힘을 구하는 방식과도 일치한다.



1.2 길이와 단위벡터


벡터의 크기는 sqrt(x^2 + y^2 + z^2) 이다. 표기는 ||u|| 같은 식으로 한다.

벡터를 벡터의 크기로 나누면 크기가 1인 단위벡터가 나오며, 이 과정을 정규화(Normalization)라고 한다.



1.3 내적

점곱(Dot Product)라고 부르는 내적(Inner Product)은 벡터 곱셈의 일종인 스칼라 값이다. 그래서 스칼라 곱(Scalar Product)라고도 칭한다.

벡터 u = (ux, uy, uz)이고 벡터 v = (vx, vy, vz)일 때 그 둘의 내적 u · v = ux*vx + uy*vy + uz*vz. 즉, 대응되는 성분들의 곱들의 합이다. 

그와 동시에 ||u|| * ||v|| * cos θ (θ는 u와 v 사이의 각도로, 0 <= θ <= π)이다.


벡터의 내적에서 찾을 수 있는 유용한 기하학적 속성을 알아두자.

 1) u · v = 0 이면 u와 v는 직교하는 벡터이다. 즉, 수직이다.

 2) u · v > 0 이면 두 벡터 사이의 각도는 90도보다 작다. (예각)

 3) u · v < 0 이면 두 벡터 사이의 각도는 90도보다 크다. (둔각)


벡터 v와 단위벡터 n, 그리고 그 사이 각도를 θ라고 하자.

Comments