先看下面这个图:
画的比较潦草,大家将就看。。。
向量from 和 向量to在xy平面上,其实这并不影响讲解插值原理。
图中可以看出当t=0.5f时,插值向量就是中间那个向量,其x轴分量的计算图中已经给出了,y轴也同理,z轴也一样。。
下面看下函数:
public static Vector3 Lerp(Vector3 a, Vector3 b, float t);
其中a就是图中的from向量,b就是to向量。
t是夹在 [0…1]之间,当t = 0时,返回from,当t = 1时,返回to。当t = 0.5 返回from和to的平均数
所以具体实现代码如下:
/// <summary>
/// 两个向量之间的线性插值
/// </summary>
/// <param name="from">向量from</param>
/// <param name="to">向量to</param>
/// <param name="t"></param>
/// <returns></returns>
public static Vector3D Lerp(Vector3D from, Vector3D to, float t)
{
if (t <= 0)
{
return from;
}
else if (t >= 1)
{
return to;
}
return t * to + (1 - t) * from;
}
线性插值比Slerp球形插值简单的多。
以上知识分享,如有错误,欢迎指出,共同学习,共同进步。