본문 바로가기

모바일프로그래밍/Android

Interpolation(보간법) 수식


Interpolation 수식을 이용하여 프레임 애니메이션을 구현하면 서서히 가속하거나 감속하는 애니메이션을 만들 수 있습니다. Interpolation 수식에는 여러 방식이 있습니다.




부동소수점 연산을 이용한 프레임 의존적인 감속 보간  

부동소수점 연산을 이용하는 경우 Euler 보간법과 달리 지수 함수를 사용하지 않기 때문에 CPU에 부담을 덜 줍니다. 따라서 감속 보간을 구현할 경우 Euler 보간법 보다 부동소수점 연산을 이용하는 것이 더 효율적입니다.

부동소수점 연산을 이용한 프레임 의존적인 감속 보간에 사용되는 수식은 아래와 같습니다.

F(x) = (x_0 * (weight - 1) + x_final) / weight

x_0 : 시작 좌표
x_final : 마지막 좌표
weight : 기울기의 곡선 처리를 부드럽게 적용하기 위한 가중치 상수




위의 수식을 이용해 소스 상에서 감속애니메이션을 구현하는 방법은 아래와 같습니다.
float weight = 8.0f; //가중치 상수
int n = 600;

x_0 = (x_0 * (weight - 1.0f) + x_final) / weight;
interpolation_values[interpolation_index++] = x_0;

for(int i=0; i<n; i++) {
   x_1 = (x_0 * (weight - 1.0f) + x_final) / weight;
   interpolation_values[interpolation_index++] = x_1 - x_0; //x의 변화량을 보간 값으로 저장
   x_0 = x_1;
}




출처 : 나의별