U3D开发学习之路——贝塞尔曲线

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面板中设置起始点,控制点,终点的位置,可以画出不同的贝塞尔曲线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值