前言
上一篇贝塞尔曲线的研究只能满足一段曲线的生成,今天将实现任意曲线生成(多节点连续曲线)。
设计原理
指定一段曲线的两个端点(p0,p3)以及两个控制点(p1,p2)然后使用三阶贝塞尔公式即可生成一段连续的曲线,将这一段曲线理解成第
n个节点到n+1个节点之间的三阶贝塞尔。
接下来就是创建N个节点了,每一个节点和其对应的下一个节点为一组曲线,最后一个节点不计算。
如何处理多节点之间的平滑过渡
每一个节点都有且仅有一个控制点,控制点左边的曲线相当于三阶贝塞尔中的p2点,而右侧则先计算其镜像的坐标作为公式中的p1,这样便可以做到一个控制点同时调节左右曲线的曲率,效果如下。
两条曲线中间节点的控制点
设计原理
BezierNodeObject :节点对象,包含一个控制点属性
public class BezierNodeObject : MonoBehaviour
{
public Transform BezierOffset;
private BezierNode bezierNode;
public BezierNode GetBezierNode()
{
bezierNode.nodeOffset = BezierOffset.position;
bezierNode.nodePos = transform.position;
return bezierNode;
}
private void Update()<