벡터의 덧셈은 단지 첫 번째 단계에 불과합니다. 벡터의 연산에는 여러 종류가 있습니다. 다음은 ProcessingJS의 PVector 객체 함수가 지원하는 연산의 목록입니다. 이제부터 이 중 중요한 몇 가지를 먼저 살펴보겠습니다. 이후에 나올 예제들은 조금씩 더 복잡해지는 만큼 다른 함수들은 그때 더 자세히 배워보겠습니다.
  • add() — 벡터 덧셈
  • sub() — 벡터 뺄셈
  • mult() — 벡터의 실수곱셈
  • div() — 벡터의 실수나눗셈
  • mag() — 벡터 크기를 계산함
  • normalize() — 벡터를 정규화하여 단위 길이를 1로 만들어줌
  • limit() — 벡터의 크기를 제한함
  • heading2D() — 2차원에서 벡터의 방향을 각도로 나타냄
  • dist() — 두 벡터(점으로 간주)간 유클리디안 거리를 계산함
  • angleBetween() — 두 벡터간 각도를 계산함
  • dot() — 두 벡터의 내적을 계산함
  • cross() — 두 벡터의 외적을 계산함 (3차원에서만 가능)
이미 덧셈은 살펴보았으므로 뺄셈부터 시작하겠습니다. 뺄셈은 그렇게 어렵지는 않습니다. 단지 + 기호를 - 기호로 바꿔주면 됩니다.

벡터 뺄셈

w=uv \vec{w} = \vec{u} - \vec{v}
위 식은 다음과 같이 나타낼 수 있습니다.
wx=uxvx \text{w}_x = \text{u}_x - \text{v}_x
wy=uyvy \text{w}_y = \text{u}_y - \text{v}_y
그리고 PVector 내부 함수는 다음과 같습니다.
PVector.prototype.sub = function(vector2) {
    this.x = this.x - vector2.x;
    this.y = this.y - vector2.y;
  };
다음은 벡터의 뺄셈을 응용한 예제로 마우스 위치와 화면의 중심 두 점 사이에 선을 표시하고 있습니다.
벡터의 기본적인 성질
수학에서 실수는 다음과 같은 기본적인 법칙을 따릅니다.
교환법칙: 3+2=2+3 3+2=2+3
결합법칙: (3+2)+1=3+(2+1) (3+2)+1=3+(2+1)
벡터에서도 위와 같은 법칙이 똑같이 적용됩니다:
교환법칙: u+v=v+u \vec{u} + \vec{v}= \vec{v} + \vec{u}
결합법칙: u+(v+w)=(u+v)+w \vec{u} + (\vec{v} + \vec{w})= (\vec{u} + \vec{v}) + \vec{w}

벡터 곱셈

이제 벡터의 곱셈으로 넘어가 봅시다. 여기서는 생각을 조금 다르게 해야합니다. 벡터를 실수와 곱해주는 것은 (또는 실수배) 벡터의 크기를 배로 늘리거나 줄이는 것을 의미합니다. 어떤 벡터의 크기를 두 배로 만들거나 세 배 줄이고 싶다면 "벡터에 2를 곱해준다", "벡터에 1/3을 곱해준다" 와 같이 표현할 수 있습니다. 여기서 주의해야할 점은 벡터를 또 다른 벡터가 아닌 스칼라, 즉 실수로 곱해주는 것입니다.
벡터의 크기를 배로 늘리거나 줄이려면 각 성분 (x 와 y) 각각에 스칼라를 곱합니다.
w=un \vec{w} = \vec{u} * n
이는 다음과 같이 나타낼 수 있습니다:
벡터표기법 예제 하나를 살펴봅시다.
따라서 PVector 객체 내의 함수는 다음과 같이 쓸 수 있습니다.
PVector.prototype.mult = function(n) {
   this.x = this.x * n;
   this.y = this.y * n;
}
mult 메소드를 코드에 응용하는 법은 다음과 같이 매우 간단합니다:
var u = new PVector(-3,7);
// 이 PVector 객체는 이제 크기가 3배이고 (-9,21)과 같습니다
u.mult(3);
다음은 위의 예제와 같지만 벡터에 0.5를 곱해주었으므로 직선의 크기가 반으로 줄었습니다.
바로 위 예제처럼 벡터에 0.5를 곱하는 방법 대신, 2로 나눠주는 방법도 있습니다. 벡터의 나눗셈은 곱셈과 같은 방식입니다. 단순히 곱셈 기호 (별표: *)를 나눈셈 기호 (사선: /) 으로 바꿔주면 됩니다.
div 메소드는 내부에서 다음과 같이 구현됩니다:
PVector.prototype.div = function(n) {
   this.x = this.x / n;
   this.y = this.y / n;
}
그리고 다음은 코드에서 응용한 예제입니다:
PVector u = new PVector(8,-4);
u.div(2);
벡터의 성질 2
덧셈 법칙과 마찬가지로 수학에서 쓰이는 기본적인 곱셈 법칙들이 벡터에 동일하게 적용됩니다.
결합법칙: (nm)v=n(mv) (n * m) * \vec{v} = n * (m * \vec{v})
분배법칙 (nn, mm: 스칼라, vv: 벡터): (nm)v=nv+mv (n * m) * \vec{v} = n * \vec{v} + m * \vec{v}
분배법칙 (nn: 스칼라, uu, vv: 벡터): (u+v)n=un+vn (\vec{u} + \vec{v}) * n = \vec{u} * n + \vec{v} * n
벡터 연산을 연습하고 싶으세요? 여기서 더 배울수 있습니다: 선형대수학: 벡터

본 "내추럴 시뮬레이션" 과정은 다니엘 쉬프만(Daniel Shiffman)이 저술한 "The Nature of Code"의 내용을 차용한 것이며, 본 내용물의 저작권은 Creative Commons Attribution-NonCommercial 3.0 Unported License를 적용합니다.
로딩 중