본문 바로가기
Math

[Math] 벡터의 일차 결합

by devfactory 2024. 10. 10.

벡터의 일차 결합 (Linear Combination)

주어진 벡터들을 스칼라 값으로 곱하고 더하는 과정

W = αV₁ + βV₂

이때 α와 β는 상수

 

벡터의 내분

벡터의 내분은 0 < t < 1 일때 주어진 두 점을 특정 비율(1 - t : t)로 나누는 과정을 말하며 다음과 같이 정의한다.

p = (1 - t)a + tB

이를 변형하면 다음과 같다

p = a + t(b - a)

vector a와 b의 내분

 

활용

  • 선형보간
    내분을 통해 시작지점에서 목표지점으로 부드럽게 이동시킬 수 있다.
static void Main()
{
    Vector startPoint = new Vector(0, 0);
    Vector endPoint = new Vector(10, 10);
    float duration = 2.0f; // 이동 시간 (초)

    // 보간 비율 초기화
    float t = 0.0f;
    int frameRate = 30; // 프레임 속도 설정 (FPS)

    // 루프 시작
    while (t <= 1.0f)
    {
        // 선형 보간 계산
        Vector currentPosition = Lerp(startPoint, endPoint, t);

        // t 업데이트
        t += (1.0f / frameRate) / duration;

        // 프레임 대기
        Thread.Sleep(1000 / frameRate);
    }
}

static Vector Lerp(Vector a, Vector b, float t)
{
    float x = (1 - t) * a.X + t * b.X;
    float y = (1 - t) * a.Y + t * b.Y;
    return new Vector(x, y);
}
  • Lerp 함수 매개변수
    • a: 시작 점 (첫 번째 점).
    • b: 끝 점 (두 번째 점).
    • t: 보간 비율
  • 계산과정
    • t의 값을 시간에 따라 증가시키며 Lerp함수를 통해 좌표를 계산하면 다음과 같이 이동한다.

시간의 변화에 맞춰 선을 따라 이동한다.

반응형

'Math' 카테고리의 다른 글

[Math] 선형 변환  (0) 2024.11.21
[Math] 스팬과 선형종속  (1) 2024.11.15
[Math] 행렬(Matrix)  (0) 2024.11.08
[Math] 벡터의 내적(Dot Product)과 외적(Cross Product)  (0) 2024.09.30
[Math] 벡터 (Vector)와 스칼라(Scala)  (1) 2024.09.30