メインコンテンツまでスキップ

線形補間(Linear Interpolation)と球面線形補間(Spherical Linear Interpolation, Slerp)



線形補間 (Linear Interpolation)

線形補間は、2つの点の間を直線的に補間する方法です。補間のパラメータ tt を使って、2つの値の間の値を計算します。

計算式

線形補間は次のように定義されます。

L(p)=(1p)A+pBL(p) = (1 - p) \cdot A + p \cdot B

  • L(p)L(p): 補間結果のベクトル
  • AA: 始点
  • BB: 終点
  • pp: 補間パラメータ (0p1)(0 \leq p \leq 1)

  • A=0A = 0, B=10B = 10, p=0.5p = 0.5 の場合:

L(0.5)=(10.5)0+0.510=5L(0.5) = (1 - 0.5) \cdot 0 + 0.5 \cdot 10 = 5

この結果から、p=0.5p = 0.5 のとき、AA から BB の間の中間点(5)が得られます。






球面線形補間 (Spherical Linear Interpolation, Slerp)

球面線形補間は、2つのクォータニオンやベクトルの間を球面上で補間する方法です。通常、回転を補間するために使われます。

計算式

球面線形補間は次のように定義されます。

Slerp(A,B,t)=sin((1t)θ)sin(θ)A+sin(tθ)sin(θ)B\text{Slerp}(A, B, t) = \frac{\sin((1 - t) \theta)}{\sin(\theta)} A + \frac{\sin(t \theta)}{\sin(\theta)} B

  • Slerp(A,B,t)\text{Slerp}(A, B, t): 補間結果のベクトル
  • AA: 始点のクォータニオンまたはベクトル
  • BB: 終点のクォータニオンまたはベクトル
  • tt: 補間パラメータ ((0 \leq t \leq 1))
  • θ\theta: AABB の間の角度(コサイン類似度に基づく)

角度の計算

角度 θ\theta は次のように計算されます。

θ=cos1(AB)\theta = \cos^{-1}(A \cdot B)

  • 2つのクォータニオン ( A ) と ( B ) がある場合、( t = 0.5 ) のときの球面線形補間を計算します。
  1. θ \theta を計算します。
  2. 上記のSlerpの式に代入します。

この結果として、( A ) から ( B ) までの球面上の補間点が得られます。