贝塞尔曲线(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;
}
Comments NOTHING