본문 바로가기
수학

선형보간법(Linear Interpolation)

by Sik.K 2023. 4. 2.

선형보간법이란 1차원에 두 지점 사이의 특정 지점을 계산하기 위해 직선 거리에 따라 선형적으로 계산하는 방법을 말한다.

 

게임에는 맵이 존재한다. 마우스 클릭으로 자유롭게 움직이는 경우도 있지만 2D에선 타일맵 기반의 게임일 경우에는 타일과 타일 사이를 이동하는 방법이 존재하여야 한다.

 

이때 현재 있는 타일을 p1이라고 하고, 목표인 타일이 p2라고 할 때, 선형보간법을 통해 직선상의 움직임을 구현할 수 있다.

 

선형보간법 수식

 

수식이 어렵지만 이를 코드로 변환하면 그리 어려운 코드는 아니다.

 

두 지점 p1과 p2 사이의 p를 구하기 위해 선형보간법을 이용해보자. 매개변수로 넘겨줘야 하는 d1은 두 지점의 거리를 1이라고 가정했을 때 그 비율을 의미한다. 때문에 d1 + d2 = 1인 것이다.

float lerp(float p1, float p2, float d1)
{
    return (((1-d1) * p1) + (d1 * p2));
}

양 끝 점의 값과 그 중간의 비율을 매개변수로 주게 되면 공식에 의해 현재 p의 위치가 나오게 된다. 이를 x축, y축, z축 각각 계산하여 적용한다면 값이 나오게 되며 p2를 고정한 상태로 함수를 계속 호출하면 결국 p1에서 p2로 이동하는 이동값이 나오게 된다.

 

이를 바탕으로 타일맵에서 타일 간의 이동을 구현할 수 있다.

'수학' 카테고리의 다른 글

벡터(Vector)  (0) 2022.12.16
행렬  (0) 2022.12.14
삼각함수 & 삼각비  (0) 2022.12.07

댓글