Bézier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、终止点(也称锚点)、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。 1962年,法国数学家Pierre Bézier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名,称为贝塞尔曲线。
以二阶贝塞尔曲线为例
贝塞尔公式脚本
public static Vector3 CreateBezierCurvePoint(Vector3 beginPos, Vector3 controlPos, Vector3 endPos, float t)
{
return Mathf.Pow(1 - t, 2) * beginPos + 2 * t * (1 - t) * controlPos + Mathf.Pow(t, 2) * endPos;
}
根据贝塞尔曲线得出所有点的坐标
public void GeneratePoints()
{
//暂时因为在Update中生成曲线节点,所以每次生成前清空节点列表
nodeList.Clear();
//如果5个节点 将分成4个部分
float ratioInterval = 1 / (nodeCount - 1);
float t = 0;
//根据节点数量生成坐标
for (int i = 0; i < nodeCount; i++)
{
Vector3 pos = CreateBezierCurvePoint(beginTF.position, controlTF.position, endTF.position, t);
nodeList.Add(pos);
t += ratioInterval;
}
}
我们在scene面板中设置起始点,控制点,终点的位置,可以画出不同的贝塞尔曲线。