贝塞尔曲线(Bezier Curve)原理、公式推导及matlab代码实现

1. 定义
贝塞尔曲线(Bezier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。

贝塞尔曲线的一些特性:

 2.直观理解

step1:在二维平面内选三个不同的点并依次用线段连接

 

step2:在线段AB和BC上找到D、E两个点,使得

Step4.找出符合上述条件的所有点

上述为一个二阶贝塞尔曲线。同样的,也有n解贝塞尔曲线

曲线 图示
一阶
三阶
四阶
五阶

 3.公式推导

3.1一次贝塞尔曲线(线性公式)

定义:给定点

        

 其中,公式中的 

 假设

同理,有:

       

 于是可将(3-1)(3-2)可简写为

 

3.2 二次贝塞尔曲线(二次方公式)

定义:二次贝塞尔曲线的路径由给定点

 

 假设

 

将上式中的A、B带入C中,即可得到二次贝塞尔曲线的公式:

 3.3 二次贝塞尔曲线(三次方公式)

同理可得三次贝塞尔曲线公式:

        

3.4 n次贝塞尔曲线(一般参数公式)

定义:给定点

 n次贝塞尔曲线可由如下递归表达:

        

 4、代码实现

首先来看不同阶数的贝塞尔曲线公式,来找共同点

N = 3: P = (1-t)^2P0 + 2(1-t)tP1 + t^2*P2
N = 4: P = (1-t)^3P0 + 3(1-t)^2tP1 + 3(1-t)t^2P2 + t^3*P3
N = 5: P = (1-t)^4P0 + 4(1-t)^3tP1 + 6(1-t)2*t2P2 + 4(1-t)t^3P3 + t^4*P4

可将贝塞尔曲线一般参数公式中的表达式用如下方式表示:
设有常数 a,b 和 c,则该表达式可统一表示为如下形式:
a * (1 – t)^b * t^c * Pn;

根据上面的分析就可以总结出 a,b,c 对应的取值规则:

b: (N – 1) 递减到 0 (b 为 1-t 的幂)
c: 0 递增到 (N – 1) (c 为 t 的幂)
a: 在 N 分别为 1,2,3,4,5 时将其值用如下形式表示: 
N=1:———1
N=2:——–1 1
N=3:——1 2 1
N=4:—–1 3 3 1
N=5:—1 4 6 4 1
a 值的改变规则为: 杨辉三角
——————————————————————-

理论基础有了,开始写代码

a 值用杨辉三角计算,b ,c 值在for 循环里计算,Pn从传入的点坐标读取。

step1:首先使用杨辉三角的方式生成a值

step2:生成贝塞尔曲线上的点

下图是一个生成的四阶贝塞尔曲线(有5个控制点)

 以上,从0到1的完成了贝塞尔曲线的实现。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月16日
下一篇 2021年9月16日

相关推荐