贝塞尔曲线(Bézier curve简单来说就是通过n个点来控制生成曲线,修改控制点可以改变曲线的形状。

公式

计算代码如下:

/// <summary>
/// 计算组合数
/// </summary>
private int Cn_m(int n,int m)
{
    int ret = 1;
    for (int i = 0; i < m; i++)
    {
        ret *= (n - 1) / (i + 1);
    }
    return ret;
}

/// <summary>
/// 计算贝塞尔曲线
/// </summary>
private Vector3 CalculateBezier(float t)
{
    //顶点坐标
    Vector3[] points = null;
    //顶点数
    int n = points.Length - 1;
    
    var ret = Vector3.zero;
    for (int i = 0; i < n; i++)
    {
        var pi = points[i];
        ret += Mathf.Pow(1 - t, n - i) * Mathf.Pow(t, i) * Cn_m(n, i) * pi;
    }

    return ret;
}
最后更新于 2022-11-02