행렬 0x07: 선형보간 (Linear interpolation)

선형보간 (Linear interpolation)

두 벡터/행렬 사이의 값을 두 벡터/행렬(이하 점) 사이를 직선으로 추정하는 방법이다.

\[u + (v - u) * time\]

두 점 사이의 직선을 이용하여 중간값을 추정하는 식이다. $ time $은 $ [0; 1] ⊂ R$을 가지는데, $ time = 0 $이면 $ u $와 동일하고, $ time = 1 $이면 $ v $와 동일하다. $ time = 0.5 $라면 결과는 $ u $와 $ v $사이의 정 중앙이된다. $ [0; 1] $ 구간이 아니더라도 무한 직선위의 지점으로 구할 수 있다. 따라서 $ time $은 실수임를 만족해도 된다.

C++ 구현


template <class K, u64 N, u64 M>
struct Matrix
{
    K data[N * M];

    static Matrix LinearInterpolation(const Matrix&, const Matrix&, float);
};


template<class K, u64 N, u64 M>
Matrix<K, N, M> Matrix<K, N, M>::LinearInterpolation(const Matrix& u,
                                                     const Matrix& v,
                                                     float time)
{
    return u + (v - u) * time;
}

벡터의 구현은 동일하다. 행 혹은 열이 1인 행렬이 벡터이기 때문에.

Categories:

Updated:

Leave a comment