4

線形補間 (lerp) 関数は次のようになります。

/// Performs a linear interpolation between two vectors. (@p v1 toward @p v2)
///  @param[out]    dest    The result vector. [(x, y, x)]
///  @param[in]     v1      The starting vector.
///  @param[in]     v2      The destination vector.
///  @param[in]     t       The interpolation factor. [Limits: 0 <= value <= 1.0]
inline void dtVlerp(float* dest, const float* v1, const float* v2, const float t)
{
    dest[0] = v1[0]+(v2[0]-v1[0])*t;
    dest[1] = v1[1]+(v2[1]-v1[1])*t;
    dest[2] = v1[2]+(v2[2]-v1[2])*t;
}

ここでの線形外挿とは、線上の位置を見つけることを意味します (図を参照) ここに画像の説明を入力

線形外挿で機能しますか(提供coef > 1または未満と言う0)?

4

1 に答える 1

4

はい、外挿は内挿と同じです (少なくともこのコンテキストでは)。

高校の幾何学を思い出すと、直線は次の形式の方程式で定義されます。

y = mx + c

ここmで、 は勾配で、cはオフセット (具体的には、y 軸の切片) です。上記のコードを見ると、各次元に次の形式の方程式があることがわかります。

dest = v1 + (v2-v1)*t

これは同じです!次のように単純に置き換えました。

  • y <-- dest
  • x <-- t
  • m <-- (v2-v1)
  • c <-- v1

したがってt、任意の値 ([0,1] の範囲内だけでなく) に設定して、線上のどこかで一意のポイントを取得できます。

于 2013-03-14T11:53:13.767 に答える