벡터 이해하기

김민수·2025년 2월 11일
0

게임수학

목록 보기
2/8

1. 벡터 조합

벡터 조합은 여러 벡터를 스칼라(실수)로 곱한 뒤 더해서, 새로운 벡터를 만들어내는 과정을 뜻한다.
예를 들어, 2차원 좌표평면에서 벡터 (6,7)(6,7)을 다음 두 벡터로 만들 수 있다.

  1. (1,0)(1,0)(0,1)(0,1)
    (6,7)=6(1,0)+7(0,1)(6,7) = 6 \cdot (1,0) + 7 \cdot (0,1)
  2. (2,2)(2,2)(2,3)(2,3)
    (6,7)=2(2,2)+1(2,3)(6,7) = 2 \cdot (2,2) + 1 \cdot (2,3)

두 방법 모두 결과적으로 (6,7)(6,7)을 만들어낼 수 있다.
이처럼 어떤 벡터를 생성할 때, 활용하는 벡터와 그 스칼라 값이 달라질 수 있으며, 이것이 벡터 조합의 핵심 아이디어다.


2. 선형 의존과 선형 독립

2.1 선형 의존(Linearly Dependent)

  • 정의: 주어진 벡터들 중 하나가 나머지 벡터들의 스칼라 배수로 표현될 수 있을 때, 이 벡터 집합을 선형 의존이라고 한다.
  • 결과: 선형 의존한 벡터들만 사용하면, 평면 전체를 커버하지 못하고 특정 직선이나 평면의 일부만 표현하게 된다.

예시: (1,2)(1,2)(2,4)(2,4)

(2,4)=2(1,2)서로 같은 방향(2,4) = 2 \cdot (1,2) \quad \Longrightarrow \quad \text{서로 같은 방향}

이 두 벡터를 조합하면 y=2xy = 2x인 직선 위의 점만 생성 가능하다.

2.2 선형 독립(Linearly Independent)

  • 정의: 어떤 벡터도 다른 벡터의 스칼라 배수로 표현될 수 없을 때, 이 벡터 집합을 선형 독립이라고 한다.
  • 결과: 선형 독립한 벡터들이라면, 2차원에서는 평면 전체를, 3차원에서는 공간 전체를 표현할 수 있다.

예시: (3,1)(3,1)(2,4)(2,4)

(3,1)k(2,4)어떤 실수 k로도 표현 불가(3,1) \neq k \cdot (2,4) \quad \Longrightarrow \quad \text{어떤 실수 }k\text{로도 표현 불가}

이 두 벡터를 사용하면 2차원 평면의 모든 점을 조합으로 만들어낼 수 있다.


3. 기저(Basis)와 차원(Dimension)

3.1 기저

  • 정의: 벡터 공간 전체를 만들어낼 수 있는(Span) 동시에 서로 선형 독립인 ‘최소 개수’의 벡터 집합이다.
  • 2차원 평면(R2\mathbb{R}^2)에서 기저를 이루는 벡터는 반드시 2개여야 하며, 서로 선형 독립이어야 한다.

3.1.1 예시

  1. (1,0)(1,0)(0,1)(0,1)
    • xx축, yy축을 나타내는 가장 표준적인 기저.
  2. (2,1)(2,1)(1,3)(1,3)
    • 이 두 벡터가 서로 선형 독립이라면, 어떤 벡터라도 적절한 스칼라 곱의 조합으로 표현 가능.

3.2 차원

  • 정의: 벡터 공간을 생성하기 위해 필요한 기저 벡터의 개수.
    • 2차원 평면(R2\mathbb{R}^2)의 차원: 2
    • 3차원 공간(R3\mathbb{R}^3)의 차원: 3
  • 예를 들어, R2\mathbb{R}^2에서 기저가 되는 벡터가 2개이므로 차원은 2라고 한다.

4. 표준 기저(Standard Basis)

표준 기저는 가장 직관적인 축 방향 벡터들로 구성된 기저를 말한다. 각 차원의 축을 나타내는 벡터들로 구성된다.

  • R2\mathbb{R}^2에서: (1,0)(1,0)(0,1)(0,1)
  • R3\mathbb{R}^3에서: (1,0,0)(1,0,0), (0,1,0)(0,1,0), (0,0,1)(0,0,1)

예: R3\mathbb{R}^3에서 벡터 (3,2,1)(3,2,1)을 표준 기저로 표현하면,

(3,2,1)=3(1,0,0)  +  2(0,1,0)  +  1(0,0,1).(3,2,1) = 3 \cdot (1,0,0) \;+\; 2 \cdot (0,1,0) \;+\; 1 \cdot (0,0,1).

5. 2D에서 선형 독립 여부 판별

2차원 벡터 (x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)가 선형 독립인지 확인하려면, 행렬식(Determinant)을 계산하면 된다. 행렬식이 0이 아니면 선형 독립, 0이면 선형 의존이다.

#include <iostream>

struct Vector2 {
    float x, y;
};

// 행렬식을 이용해 선형 독립 여부를 판별
bool isLinearlyIndependent(const Vector2& v1, const Vector2& v2) {
    float determinant = v1.x * v2.y - v1.y * v2.x;
    return (determinant != 0.0f);
}

int main() {
    Vector2 a = {1, 2};
    Vector2 b = {2, 4};

    if (isLinearlyIndependent(a, b)) {
        std::cout << "a와 b는 선형 독립입니다.\n";
    } else {
        std::cout << "a와 b는 선형 의존입니다.\n";
    }

    return 0;
}
  • (1,2)(1,2)(2,4)(2,4)의 행렬식을 계산하면 1422=44=01*4 - 2*2 = 4 - 4 = 0이므로, 선형 의존 판정이 나온다.

6. 게임 개발에서의 활용

  1. 캐릭터 이동

    • 방향키(→, ↑ 등)를 조합해 대각선 이동을 자연스럽게 표현할 수 있다.
    • velocity=(vx,vy)\text{velocity} = (v_x, v_y) 벡터를 매 프레임마다 position+=velocity×Δt\text{position} += \text{velocity} \times \Delta t 형태로 업데이트한다.
  2. 물리 엔진

    • 2D 물리에서 힘, 속도, 가속도 벡터를 합성하는 과정은 벡터 조합과 동일하다.
    • 서로 다른 방향에서 힘이 작용한다면, 선형 독립 벡터들의 조합을 통해 자유로운 움직임을 표현할 수 있다.
  3. 카메라 이동

    • 카메라가 (x,y)(x, y) 위치를 바라보도록 기저 벡터를 바꿔 생각할 수 있으며, 미니맵 혹은 다른 뷰포트를 구성할 때도 유사한 방식을 쓴다.
  4. 그래픽스/좌표계 변환

    • 2D 그래픽스에서 객체(스프라이트)의 회전, 스케일, 이동을 적용할 때, 기저 변환을 이용해 좌표를 옮길 수 있다.

profile
안녕하세요

0개의 댓글