본문 바로가기
📚 STUDY/🔆 UNITY

[Lerp] 선형 보간법 (linear interpolation)

by 엄지잉 2023. 8. 23.

선형 보간법

끝점의 값이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법

 

  • a(x0, y0), b(x1, y1)이라고 가정했을 때, 파란색 점인 c(x, y) 위치를 추정하기 위하여 사용

  • p1, p2 사이에 있는 점 p의 값을 추정하기 위해 사용

결과적으로 두 점의 직선 상에 있는 점을 p라고 했을 때, p의 x좌표만 알면 비율을 통해 y좌표도 알 수 있음.

 

💡 참고한 블로그 정리 (아래에 링크있습니다.)

 

  • a와 b 직선 사이에 있는 점 c의 x좌표를 4.9라고 임의로 지정

  • 전체 거리 d = b-a = 5
  • 시작점(a)과 c 사이의 거리 d1 = 4.9-2 = 2.9
  • d1에 대한 d의 배율 : d1/d = 2.9/5 = 0.58

▶ a로부터 b 방향의 직선으로 전체거리의 58%만큼 움직이면 c가 나온다.

 

이 배율을 이용해, y좌표도 구할 수 있다.

  • 전체 거리 d' = b-a = 3
  • 시작점 + (d' * 0.58) = 1 + (3*0.58) = 2.74

▶ 즉,  c의 y 좌표는 2.74이다.


 Unity 내에서의 선형보간 함수

종류
Mathf.Lerp()      // 숫자 간
Vector2.Lerp()    // Vector2 간
Vector3.Lerp()    // Vector3 간
Quaternion.Lerp() // Queternion 간
  • 파라미터는 3개로 구성되어 있음.
    • a : 일차 함수의 시작값
    • b : 일차 함수의 끝값
    • t : 얻고 싶은 값의 위치 (0~1 사이의 비율)
예시
Vector2 pos = Vector2.Lerp(new Vector2(0, 0), new Vector2(100, 100), 0.5);
  • return : Vector2(50, 50)

 

Vector3의 경우, a + (b - a) * t를 통해 보간된 값이 반환됨


🌐 참고 사이트

https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html

 

Unity - Scripting API: Vector3.Lerp

Interpolates between the points a and b by the interpolant t. The parameter t is clamped to the range [0, 1]. This is most commonly used to find a point some fraction of the way along a line between two endpoints (e.g. to move an object gradually between t

docs.unity3d.com

https://spiralmoon.tistory.com/entry/Algorithm-%EC%84%A0%ED%98%95-%EB%B3%B4%EA%B0%84%EB%B2%95-Linear-interpolation

 

[Algorithm] 선형 보간법 (Linear interpolation)

선형 보간법 (Linear interpolation) 선형 보간법을 구현하는 방법에 대해 알아보자. 선형 보간법이란? 선형 보간법은 1차원 직선상에서 두 점의 값이 주어졌을 때 그 사이의 값을 추정하기 위해 직선

spiralmoon.tistory.com