Unity之Vector3.Lerp线性插值原理介绍

博客迁移

个人博客站点,欢迎访问,www.jiingfengji.tech

正文

先看下面这个图:
这里写图片描述

画的比较潦草,大家将就看。。。

向量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球形插值简单的多。

以上知识分享,如有错误,欢迎指出,共同学习,共同进步。


版权声明:本文为qq_26999509原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。