1. 벡터 조합과 선형 독립

벡터 조합
벡터 조합은 주어진 벡터들을 이용해 새로운 벡터를 생성하는 과정이다.
예를 들어, (6,7)(6,7)을 벡터 (1,0)(1,0)(0,1)(0,1)을 이용하여 다음과 같이 만들 수 있다.
(6,7)=6⋅(1,0)+7⋅(0,1)
벡터를 조합하는 방법은 여러 가지가 있지만, 모든 조합이 가능한 것은 아니다.
선형 의존과 선형 독립
선형 독립 (Linearly Independent): 한 벡터를 다른 벡터들의 조합으로 나타낼 수 없을 때.

선형 의존 (Linearly Dependent): 한 벡터가 다른 벡터의 배수로 표현될 때.

선형 독립 예제
벡터 (2,1)(2,1)(1,3)(1,3)의 선형 독립 여부를 확인하기 위해 다음 방정식을 푼다.
(6,7)=a(2,1)+b(1,3) 이를 연립방정식으로 변환하면:
6=2a+b
7=a+3b
해를 구하면 a=2,b=1a = 2, b = 1로 유일한 해가 존재하므로, 두 벡터는 선형 독립이다.

선형 의존 예제
벡터 (1,2)(1,2)(2,4)(2,4)는 다음과 같은 관계가 성립한다.
(2,4)=2⋅(1,2) 따라서, 이 두 벡터는 선형 의존이다. 이는 벡터들이 같은 방향을 가리킨다는 것을 의미한다.

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

기저(Basis): 벡터 공간의 모든 벡터를 생성할 수 있는 최소한의 선형 독립 벡터 집합.

차원(Dimension): 벡터 공간을 이루는 기저 벡터의 개수.
2D 평면에서의 기저 예시

표준 기저(Standard Basis)

벡터 (1,0)(1,0)(0,1)(0,1)
가장 기본적인 기저로, 모든 2D 벡터는 이 기저의 조합으로 표현 가능.

다른 기저의 예
벡터 (3,1)(3,1)(2,4)(2,4)가 선형 독립이라면, 이들도 기저가 될 수 있다.

3. 함수의 개념

함수(Function)는 입력을 받아 일정한 규칙에 따라 출력을 반환하는 대응 관계이다.
보통 f(x)f(x) 형태로 표현하며, 예를 들어 f(x)=2xf(x) = 2x일 때:
f(3)=6f(3) = 6

함수의 주요 개념
정의역(Domain): 함수가 적용될 수 있는 입력 값의 범위.

공역(Codomain): 함수의 출력이 포함될 수 있는 값들의 집합.

치역(Range): 함수가 실제로 생성하는 출력 값들의 집합 (공역의 부분집합).

단사, 전사, 전단사
단사(Injective): 서로 다른 입력이 항상 서로 다른 출력을 갖는 함수.

전사(Surjective): 공역의 모든 값이 적어도 하나의 정의역 원소에 대응하는 함수.
전단사(Bijective): 단사이면서 전사인 함수 (즉, 모든 입력이 유일한 출력을 가짐).

역함수 (Inverse Function)
함수 f(x)f(x)의 역함수 f1(x)f^{-1}(x)는 원래 함수의 출력을 입력으로 받아 원래의 입력을 반환하는 함수이다.
예제:
y=2x+3y = 2x + 3
x=y32x = \frac{y - 3}{2}
f1(x)=x32f^{-1}(x) = \frac{x - 3}{2}

4. 선형성(Linearity)

어떤 함수 f(x)f(x)가 다음 두 조건을 만족하면 선형성(Linear Property)을 갖는다.

가산성(Additivity):
f(x+y)=f(x)+f(y)
1차 동차성(Homogeneity):
f(ax)=af(x)
선형 함수 vs 일차 함수
선형 함수 (Strictly Linear Function): f(x)=axf(x) = ax (절편 b=0b=0)
일차 함수 (Affine Function): f(x)=ax+bf(x) = ax + b (일반적인 일차 함수)
선형성의 엄격한 정의에 따르면, 일차 함수는 선형 함수가 아니다.
예제

선형 함수: f(x)=2xf(x) = 2x
f(x+y)=2(x+y)=2x+2y=f(x)+f(y)f(x + y) = 2(x + y) = 2x + 2y = f(x) + f(y)
f(ax)=2(ax)=a(2x)=af(x)f(a x) = 2(ax) = a (2x) = a f(x)
→ 선형성 만족!
일차 함수: f(x)=2x+5f(x) = 2x + 5
f(x+y)=2(x+y)+5=2x+2y+5f(x + y) = 2(x + y) + 5 = 2x + 2y + 5
f(x)+f(y)=(2x+5)+(2y+5)=2x+2y+10f(x) + f(y) = (2x + 5) + (2y + 5) = 2x + 2y + 10
→ 가산성이 깨지므로 선형이 아님!

5. 게임에서 함수와 선형성의 활용

  1. 함수의 활용 예시
    게임 캐릭터의 체력(HP)은 0 이하로 내려가면 안 된다.
    따라서 체력을 제한하는 함수를 만들 수 있다.

#include <iostream>
#include <algorithm> // std::max 사용

float ClampHealth(float health) {
    return std::max(0.0f, health);
}

int main() {
    float playerHealth = -10.0f;
    playerHealth = ClampHealth(playerHealth);

    std::cout << "Player Health: " << playerHealth << "\n"; // 0 출력
    return 0;
}
  

ClampHealth 함수는 정의역을 제한하여 논리적 오류를 방지한다.

  1. 선형 보간 (Lerp: Linear Interpolation)
    선형 보간은 두 점 사이의 값을 특정 비율(tt)에 따라 계산하는 기법이다.

#include <iostream>

struct Vector2 {
    float x, y;

    Vector2 LerpTo(const Vector2& target, float t) const {
        return {
            (1 - t) * x + t * target.x,
            (1 - t) * y + t * target.y
        };
    }

    void Print() const {
        std::cout << "Position: (" << x << ", " << y << ")\n";
    }
};

int main() {
    Vector2 start = {0.0f, 0.0f};
    Vector2 end = {10.0f, 5.0f};

    for (float t = 0.0f; t <= 1.0f; t += 0.2f) {
        Vector2 interpolated = start.LerpTo(end, t);
        interpolated.Print();
    }

    return 0;
}

결과


Position: (0.0, 0.0)
Position: (2.0, 1.0)
Position: (4.0, 2.0)
Position: (6.0, 3.0)
Position: (8.0, 4.0)
Position: (10.0, 5.0)

게임 캐릭터의 이동, 애니메이션, 카메라 전환 등에 활용됨.

6. 오늘의 배운 점

벡터 조합과 선형 독립 개념을 통해, 특정 벡터로 원하는 위치를 만들 수 있는지 확인하는 방법을 배웠다.
함수의 개념과 선형성이 수학적으로 어떻게 정의되는지 학습했다.
선형 보간(Lerp)이 게임에서 캐릭터 움직임 및 애니메이션에 어떻게 활용되는지 이해했다.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN