1.
벡터
- 크기와 방향을 모두 가진 물리적 수량을 나타내는 데 사용
- 디지털 공간에서는 보통 (x, y, z) 형식으로 나타낸다.
- 벡터는 원점(또는 임의의 기준점)으로부터 얼마만큼 떨어졌는지는 중요하지 않고, 순수한 방향과 크기만으로 정의된다.
2.
- 덧셈 : $\mathbf{u} + \mathbf{v} = (u_x + v_x, u_y + v_y, u_z + v_z)$
- 뺄셈 : $\mathbf{u} - \mathbf{v} = (u_x - v_x, u_y - v_y, u_z - v_z)$
- 곱셈 : $k\mathbf{u} = (ku_x, ku_y, ku_z)$
- 길이 : $\Vert{}\mathbf{u}\Vert{} = \sqrt{x^2 + y^2 + z^2}$
- 정규화 : $\hat{\mathbf{u}} = \frac{\mathbf{u}}{\Vert{}\mathbf{u}\Vert{}} = \left(\frac{x}{\Vert{}\mathbf{u}\Vert{}}, \frac{y}{\Vert{}\mathbf{u}\Vert{}}, \frac{z}{\Vert{}\mathbf{u}\Vert{}} \right)$
- 내적 : $\mathbf{u} \cdot \mathbf{v} = \Vert{}u\Vert{} \Vert{}v\Vert{} \cos \theta = u_x v_x + u_y v_y + u_z v_z$
- 외적 : $\mathbf{u} \times \mathbf{v} =
(u_y v_z - u_z v_y, u_z v_x - u_x v_z, u_x v_y - u_y v_x)$
3.
코드에서 SIMD 연산들을 이용해서 벡터를 효율적으로 조작하기 위해서는 XNA Math 라이브러리의 XMVECTOR 클래스를 사용한다.
XMVECTOR