cocos-lua 贝塞尔曲线 抛物线

简介

贝塞尔曲线(Bézier curve)又被称为贝兹曲线贝济埃曲线,是应用于二维图形应用程序的数学曲线,它的数学基础是伯恩斯坦多项式(Bernstein polynomial,since 1912),1959年法国数学家Paul de Casteljau提出了数值稳定的de Casteljau算法,开始贝塞尔曲线的图形化应用研究,而贝塞尔曲线的名称来源于一位就职于雷诺的法国工程师Pierre Bézier,他在1962年开始对贝塞尔曲线做了广泛的宣传,他使用这种只需要很少的控制点就能生成复杂平滑曲线的方法来进行汽车车体的工业设计。
贝塞尔曲线因为它控制简便却具有极强的描述能力,迅速在工业设计和计算机图形学等相关领域得到了广泛应用。比如在矢量绘图中,贝塞尔曲线用来给需要无限制地缩放的平滑曲线定模,许多绘图软件都提供了绘制贝塞尔曲线的功能。贝塞尔曲线还用于动画时间控制以实现美观逼真的缓动效果,还用于机器人转动手臂等方面的设计。

对于贝塞尔曲线来说,最重要的点是,数据点和控制点。
数据点: 指一条路径的起始点和终止点。
控制点:控制点决定了一条路径的弯曲轨迹,根据控制点的个数,贝塞尔曲线被分为一阶贝塞尔曲线(0个控制点)、二阶贝塞尔曲线(1个控制点)、三阶贝塞尔曲线(2个控制点)等等。从1-n阶的连续函数,都可以计算得到一条光滑曲线。

贝塞尔曲线展示

以下公式中:B(t)t时间下点的坐标,P0为起点,Pn为终点,Pi为控制点

一阶贝塞尔曲线

在这里插入图片描述
一阶贝塞尔曲线

二阶贝塞尔曲线

在这里插入图片描述
二阶贝塞尔曲线

三阶贝塞尔曲线

在这里插入图片描述
三阶贝塞尔曲线

四阶贝塞尔曲线四阶贝塞尔曲线
五阶贝塞尔曲线

五阶贝塞尔曲线
通用公式:
在这里插入图片描述

cocos引擎中的Bezier

cocos-2dx引擎中自带的是三阶贝塞尔曲线,需要两个控制点,可以通过让两个控制点坐标相同,转化成二阶,即抛物线。
推荐一个网站,可以模拟和生成多种样式的曲线在线生成贝塞尔曲线(英文)在线生成贝塞尔曲线(中文)

C++函数原型
//结构体
typedef struct _ccBezierConfig {
   
    Vec2 endPosition; // end position of the bezier
    Vec2 controlPoint_1; // Bezier control point 1
    Vec2 controlPoint_2; // Bezier control point 2
} ccBezierConfig; 

// BezierTo创建函数
static BezierTo* create(float t, const ccBezierConfig& c);
参数解读

endPosition:曲线的终点
controlPoint_1: 曲线起点的控制点(控制第一个波峰或波谷)
controlPoint_2:曲线终点的控制点(控制第二个波峰或波谷)
当 controlPoint_1 == controlPoint_2 时,曲线只有一个波峰或波谷
注意:lua中调用的时候,参数的顺序发生了变化,下面截取了部分代码

ccBezierConfig config;
config.controlPoint_1 
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值