벡터(vector, 방항량)는 크기와 방향을 모두 가진 수량을 가리키는 말이다. 크기(magnitude)와 방향(direction)을 모두 가진 수량을 벡터값 수량(vector-valued quantity)이라고 부른다.
벡터의 선분의 길이는 벡터의 크기를 나타내고 화살표는 벡터의 방향을 나타낸다. 벡터가 그려진 위치는 중요하지 않다.
위치를 바꿔도 벡터의 크기나 방향은 변하지 않기 때문이다.
위 그림에서 벡터 u와 v는 길이가 같고, 가리키는 방향도 같으므로 상등(equal)이다.
1.벡터와 좌표계
벡터에 대한 기하 연산들은 벡터값 수량들이 관여하는 문제를 풀 때 유용하다. 그러나 컴퓨터는 벡터들을 기하학적으로 다루지 못한다. 따라서 벡터들을 수치적으로 지정하는 방법이 필요한데, 공간에 하나의 3차원 좌표계를 도입하고, 모든 벡터를 그 꼬리가 원점과 일치하도록 이동시킨다(그림 1.2).
같은 벡터라도 기준계가 다르면 그 좌표 표현이 달라진다.
위 그림을 보면 벡터 v를 표준 위치로 이동한다고 할 때, 좌표계 A를 기준으로 한 벡터 v의 좌표와 좌표계 B를 기준으로 한 v의 좌표가 다른 것을 볼 수 있다.
쉽게 설명하자면, 벡터 v의 크기와 방향은 같지만 좌표계 A와 좌표계 B는 로컬 좌표는 같아도 글로벌 좌표는 다르다.
우리가 어떤 벡터를 좌표로 규정하거나 식별할 때 그 좌표는 항상 어떤 기준계에 상대적임을 뜻한다. 3차원 컴퓨터 그래픽에서는 여러 개의 기준계들을 사용하는 경우가 많으므로, 벡터를 다룰 때에는 주어진 벡터의 좌표가 현재 어떤 기준계에 상대적인지를 기억할 필요가 있다. 또한 한 기준계에서의 벡터 좌표를 다른 기준계로 변환하는 방법도 알아야 한다.
2.왼손잡이 좌표계 vs 오른손잡이 좌표계
Direct3D는 왼손잡이 좌표계(left-handed coordinate system)를 사용한다.
중지 : +x축, 검지 : +z축, 엄지 : +y축
난 이렇게 외웠는데 정석은 이 손모양이 아니다.
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.벡터에 스칼라(scalar)를 곱할 수 있다. k가 스칼라라고 할 때 ku = (kux, kuy, kuz)이다.
4.벡터 뺄셈은 벡터 덧셈과 스칼라 곱셈을 통해서 정의된다. u - v = u + (-1 * v) = u + (-v) = (ux - vx, uy - vy, uz - vz)이다.