23.03.15.(수) - 보간법

김도익·2023년 3월 19일
0

Unity

목록 보기
11/23

개요

보간법(Interpolation)이란 수학에서 둘 이상의 변숫값에 대한 함숫값을 알고서, 그것들 사이의 임의의 변숫값에 대한 함숫값이나 그 근삿값을 구하는 방법을 말합니다.
즉, 두개의 데이터가 있고 이에 대한 함수를 안다면 이를 이용해 중간 단계의 데이터를 얻어낼 수 있다는 것입니다.

보간법을 이용하면 부드러운 움직임을 구현하는 데 사용할 수 있습니다. 보간법에는 다양한 방법이 존재하지만대표적인 2가지에 대해서 알아보겠습니다.

선형 보간법

선형 보건법(Lerp; Linear Interpolation)은 선형 방정식을 사용해 보간하는 방법을 의미합니다.

코드로 나타내면 아래와 같습니다.

Unity는 이미 이에 데한 API를 제공하고 있습니다. 예를 들어 Math.Lerp(), Vector3.Lerp() 등이 있습니다.

구면 선형 보간법

구면 선형 보간법(Slerp; Spherical Linear Interpolation)은 두 데이터를 통과하는 가장 짧은 호에서 임의의 데이터를 얻을 수 있는 보간법입니다.

구면 선형 보간의 경우 계산에 의한 오차가 있어 완벽하게 구하기 어려우므로 코드 구현은 생략하겠습니다. 수식이 궁금하다면 여기를 참고하면 되겠습니다.

Unity에서는 Vector3.Slerp(), Quaternion.Slerp()를 제공합니다.

베지어 곡선

선형 보간을 이용하면 베지어 곡선을 구현할 수 있습니다. 베지어 곡선에 대한 설명은 여기를 참고하면 되겠습니다.

1차부터 3차까지의 베지어 곡선의 코드는 아래와 같습니다.

이를 재귀적으로 구현하면 아래와 같습니다.

교수님 수업 1차 베지어 곡선



교수님 수업 2차 베지어 곡선




개구리처럼 폴짝 폴짝 잘 뜁니다!

교수님 수업 3차 베지어 곡선


profile
고급 개발자가 되고 싶어요!

0개의 댓글