[게임수학] 2. 벡터(Vector)

2025. 8. 27. 03:49·게임수학
728x90

→ 이 글은 「이득우의 게임 수학」을 바탕으로 작성했습니다.

■ 데카르트 좌표계

[데카르트 좌표계]

두 실수 집합의 곱집합(R×R)의 원소(x, y)를 2차원 평면의 한 점에 대응시키는 방식을 "데카르트 좌표계"라 한다.

이때 첫 번째 성분 x는 수평축(가로축), 두 번째 성분 y는 수직축(세로축)에 대응한다.

  • 데카르트 좌표계의 한 원소는 곱집합과 동일하게 순서쌍$(x,y)$로 표현하며 좌표라 부른다.

좌표는 데카르트에서 한 점(위치)으로 표현된다. 벡터는 원점에서 시작하는 화살표로 표현되며, "크기(길이)"와 "방향"이라는 두 속성을 가진다.

 

■ 벡터 공간과 벡터

벡터 공간은 실수들을 묶어 만든 집합(점들의 집합)에 더하기와 곱하기 규칙을 정해서 크기와 방향을 다루는 공간이다.

  • 벡터 공간의 원소를 벡터라 하며 특정한 수 집합을 지칭하지 않고 체의 구조를 만족하는 수 집합의 원소인 스칼라(Scalar)를 사용한다.
    • 좌표로 사용하는 실수$(x,y)$는 공리적 집합론 관점에선 스칼라이다.

$$ \vec v = (x,y) $$

벡터는 위와 같이 기호 위에 화살표(→)를 붙여 표현한다.

 

1. 벡터 공간의 연산

벡터 공간에는 2가지 기본 연산이 존재한다.

 

1. 벡터의 합

[벡터의 합]

$$ \vec v_1 + \vec v_2 = (x_1,y_1) + (x_2,y_2) = (x_1+x_2,y_1+y_2) $$

벡터의 합은 같은 차원의 벡터를 더할 때, 각 성분을 서로 더해 "새로운 벡터"를 만드는 연산이다.

 

왼쪽 벡터를 물체를 구성하는 점, 오른쪽 벡터를 점을 이동시키는 힘으로 연산을 시각화하면 각 축에 대해 독립적으로 평행 이동시키는 작업으로 해석할 수 있다.

 

2. 스칼라 곱셈(스칼라배)

[스칼라 곱셈]

$$ a \cdot \vec v = a\cdot(x_,y) = (ax, ay) $$

스칼라 곱셈으로 생성된 벡터는 원점을 지나고, 벡터와 평행한 직선상에 위치한다.

 

체가 갖는 연산 성질을 기반으로 벡터 공간에서의 연산은 아래의 규칙을 따른다.

 

1. 벡터 더하기

  • 벡터 덧셈의 순서를 바꿔도(교환법칙) 결과는 동일하다.  $\vec a + \vec b = \vec b+\vec a$
  • 벡터 덧셈에 대한 결합 법칙이 성립한다. $(\vec a + \vec b) + \vec c = \vec a + (\vec b + \vec c)$
  • 항등원(영벡터)이 존재한다. $\vec a + (0,0) = \vec a$
  • 역원(반대 방향의 벡터)이 존재한다. $(3,3) + (-3,-3) = (0,0)$

 

2. 스칼라 곱하기

  • 1을 곱하면 그대로 (항등원)
  • 스칼라끼리 곱한 뒤 벡터에 곱하는 것과, 차례로 곱하는 게 같다 (호환성)
  • 스칼라 곱은 벡터 더하기에 고르게 분배된다. $a(\vec v + \vec u) = a\vec v + a\vec u$
  • 벡터 하나에 대해 스칼라 덧셈도 분배된다. $(a+b)\vec v = a\vec v+b\vec v$

벡터 공간의 공리는 모두 체의 공리를 기반으로 하기 때문에 위 공리 또한 모두 참이다. 

 

■ 벡터의 크기와 이동

벡터의 크기도 동일하게 원점으로부터의 최단 거리를 의미하며, 피타고라스 정리를 사용해 거리를 측정한다.

$$ c^2 = a^2 + b^2 \\ \therefore c = \sqrt{a^2 + b^2} $$

[벡터의 크기]

$$ ||\vec v|| = \sqrt{4^2 + 3^2} = 5 $$

  • 벡터의 크기는 노름(Norm)이라는 용어로 부르며, 수직 막대 기호(||)를 2개 붙여서 사용한다.

벡터의 크기가 1인 벡터를 단위벡터라 부르고 $\hat v$기호를 사용한다. 임의의 벡터를 크기가 1인 벡터로 다듬는 작업을 정규화(Normalize)라고 한다.

$$ \hat v = \frac{\vec v}{||\vec v||} $$

  • 정규화가 필요한 이유는 벡터의 크기, 방향 성분 중 방향 성분만 계산할 필요가 있을 때.
  • 벡터의 크기가 다르면 계산 결과가 왜곡될 수 있기 때문에 정규화를 통해 크기를 제거한다.

 

■ 벡터의 결합과 생성

벡터 공간에서 벡터의 합과 스칼라 곱셈 연산은 "선형성"이 있어, 선형 연산이라 부른다.

이러한 선형 연산을 사용하여 n개의 스칼라와 n개의 벡터를 결합(선형 결합)하면 새로운 벡터를 생성할 수 있다.

$$ a_1\vec v_1 + a_2\vec v_2 + ... + a_n\vec v_n = \vec {v'} $$

 

만약, n개의 스칼라와 벡터를 결합했을 때, 영벡터(모든 원소의 값이 0)가 나오는 경우를 생각해 보자.

 

1. 모든 스칼라가 0이 아니어도 영벡터가 나오는 경우

$$ a(2,1) + b(4,2) \\ -2(2,1) + 1(4,2) = \vec 0 $$

벡터(2,1)와 (4,2)를 선형 결합했을 때, a = -2, b = 1이라면 모든 스칼라가 0이 아니어도 영벡터가 만들어진다.

  • 위와 같이 모든 스칼라가 0이 아니어도 영벡터가 만들어진다면, 두 벡터는 "선형 종속"관계라고 한다.

 

[선형 종속 관계인 두 벡터의 선형 결합]

좌표평면에서 보면, 두 벡터는 서로 평행한 방향에 존재한다.

즉, 두 벡터는 서로 "스칼라 배수"관계 $(4,2) = 2(2,1)$ 이며, 이들의 선형 결합으로 만들어지는 벡터는 항상 같은 직선 위(원점을 지나는 직선)에 놓인다.

  • 따라서, 한 벡터가 다른 벡터의 배수인지를 확인하면 선형 종속인지 아닌지를 판단 가능하다.

 

2. 벡터에 곱해지는 스칼라가 모두 0인 경우

$$ 0\cdot\vec v_1 + 0\cdot\vec v_2 = \vec 0 $$

 

n개의 스칼라가 모두 0일 때만 영벡터가 만들어진다면, 그 벡터들은 서로 선형 독립 관계를 가진다.

 

[선형 독립 관계인 두 벡터의 결합]

$$\vec w = a(2,1) + b(1,3)$$

선형 독립인 두 벡터(2,1)/(1,3)을 예시로 들어보자.

  • $w_x = 2a + b$
  • $w_y = a + 3b$

식을 $w_x$, $w_y$로 나타내면 위와 같이 정리 가능하고, 여기서 $(w_x,w_y)$는 a,b 값에 따라 모든 실수 좌표를 표현할 수 있다.

→  $(w_x,w_y)$가 영벡터가 되는 경우는 a , b가 모두 0인 경우.

 

정리하자면, 두 벡터가 선형 독립 관계이면 서로 다른 방향을 가지므로, 선형 결합을 통해 평면에 있는 모든 벡터를 만들 수 있다. 반대로 두 벡터가 선형 종속이라면, 같은 직선 위의 벡터만 생성된다.

 

🤔 두 벡터가 선형 종속이라면?

$$ (5,5) = a(1,2) + b(2,4) \\ ------------- \\ a + 2b = 5 \\ 2a + 4b = 5\\ ------------- \\ 2a + 4b = 10 \\ 2a + 4b = 5 $$

선형 종속 관계인 두 벡터로 (5,5) 벡터를 선형 결합하려고 한다면, 위와 같이 두 식을 만족하는 a, b의 값은 구할 수 없다.

 

🤔세 개의 벡터를 선형 결합하면? 

$$ a(2,1) + b(1,3) + c(x,y) = 0 \\ -c(x,y) + c(x,y) = 0 $$

3개의 벡터로 구성된 선형 결합식의 경우 a, b, c가 0일 때만 영벡터가 만들어져야 하지만, 0이 아님에도 영벡터를 만들 수 있으므로, 선형 독립의 관계가 유지되려면 2개의 벡터만 사용되어야 한다.

 

■ 기저(Basis) 벡터

선형 독립 관계를 가지는 벡터의 집합을 기저(Basis)라 하며, 이 기저에 속한 원소를 기저벡터라고 한다. 

  • 벡터 공간은 두 개의 실수 집합을 결합해 생성한 벡터 공간이며, 이를 2차원 실벡터 공간이라 한다

 

이러한 기저 중, 한 축만 사용하는 단위 벡터(1,0), (0,1)로 구성된 집합을 표준기저라고 하며, 각 원소를 표준기저벡터$(e_1, e_2)$라 한다.

 

이러한 기저를 변경하게 되면, (예시 : {(1,0), (0,1)} 대신 {(2,1), (1,3)}) 좌표(계수)가 바뀌지만, 벡터 공간 자체는 그대로이다.

  • (5,5)를 표준 기저로 표현하면 : 5(1,0) + 5(0,1)
  • 기저 (2,1), (1,3)로 표현하면 2(2,1)+1(1,3)

즉, 점(5,5)은 그대로지만, 좌표계 안에서의 좌표 값이 달라지는 것을 확인할 수 있다.

 

마지막으로, 표준기저벡터는 아래와 같이 확장이 가능하다.

$$ e_1 = (1,0,0) \\ e_2= (0,1,0) \\ e_3=(0,0,1) $$

 

앞서 설명한 것처럼 3개의 벡터를 사용하면 모든 스칼라가 0이 아니어도 영벡터가 나오고, 이 경우 생성되는 공간은 전체 3차원이 아니라 더 낮은 차원으로 제한된다.

 

하지만 표준기저 3개는 선형 독립이라서 오직 스칼라가 0일 때만 영벡터가 나오고, 따라서 3차원 전체를 생성할 수 있게 되는 것이다.

728x90

'게임수학' 카테고리의 다른 글

[게임수학] 4. 행렬  (1) 2025.09.05
[게임수학] 3. 삼각함수  (2) 2025.08.31
[게임수학] 1. 수(Number)와 함수(Function)  (2) 2025.08.26
'게임수학' 카테고리의 다른 글
  • [게임수학] 4. 행렬
  • [게임수학] 3. 삼각함수
  • [게임수학] 1. 수(Number)와 함수(Function)
브라더스톤
브라더스톤
유티니, C#과 관련한 여러 정보를 끄적여둔 블로그입니다. Email : dkavmdk98@gmail.com
  • 브라더스톤
    젊은 프로그래머의 슬픔
    브라더스톤
  • 전체
    오늘
    어제
    • 개발 노트 (31) N
      • Unity,C# (27)
        • Unity 정보 (5)
        • 알고리즘 (11)
        • 자료구조 (2)
        • 절차적생성(PCG) (9)
      • 게임수학 (4) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    커스텀 윈도우
    pcg
    수집합
    게임수학
    절차적던전생성
    CustomEditorWindow
    이진공간분할
    절차적지형생성
    PerlinNoise
    unity
    최단경로찾기
    알고리즘
    정렬알고리즘
    BSP
    기저벡터
    자료구조
    CustomWindow
    Custom Inspector
    C#
    공간분할알고리즘
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
브라더스톤
[게임수학] 2. 벡터(Vector)
상단으로

티스토리툴바