행렬 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인 행렬이 벡터이기 때문에.
Leave a comment