Bezier Curve贝塞尔曲线概念

一、贝塞尔曲线的概念 
        对于两点之间的连线,我们可以用直线进行连接效果如下:

        其中的每一个F点都在AB连接的线段上。

        这就是一阶贝塞尔曲线。

       

 如果我们加入一个控制点C,那么做图如下:

       1、连接AC,BC;

        2、在AC,BC上找到 AD/AC = CE/CB 的点D,E;

        3、连接DE,在DE上寻找点F,F点需要满足:EF/ ED = AD/AC = CE/CB;

        4、找出所有F点,连接而成的线,就是贝塞尔曲线;

扫描二维码关注公众号,回复: 14589868 查看本文章

       两个线段根据等比关系找点的贝塞尔曲线,一般也称为二阶贝塞尔曲线。

       关于贝赛尔曲线的基本数学理论大概就是上面的内容。

       除了二阶贝塞尔曲线外还有三阶,四阶贝塞尔曲线,它们的控制点依次增加,我们常用的是三阶贝塞尔曲线,有两个控制点,控制点决定着生成完成后曲线的形状。

      三阶贝塞尔曲线的绘制示意图如下:

 

     1、首先连接AC,AB,BD;

     2、找到EFG三点,满足 AE/AC = BF/BA = DG/DB;

     3、连接EF.FG;

     4、找到J,I两点,满足 AE/AC = BF/BA = DG/DB = FJ/FE = GI/GF;

     5、连接JI两点;

     6、找到H点,满足AE/AC = BF/BA = DG/DB = FJ/FE = GI/GF = IH/IJ;

     7、F点从A移动到B,所计算出的H点连成的线,就是三阶贝塞尔曲线;

二、三阶贝塞尔曲线控制点的计算方法
        介绍完了什么是贝塞尔曲线,现在来说遇到的问题:

        现在已知有A,B.C.D,E,F,G,H点若干个,假如它们直线连接如下

 

       可以看出,连接直线并不平滑,在连接点上会出现方向突变。

       如果想要生成光滑曲线,需要进行控制点计算,计算出A,B,C,D,E,F,H各个带你的控制点进行计算

       每个位置要计算出左右两个控制点L1,L2:

算法如下:

1、两端的控制点位置为自己本身,例如A点控制点位置L1=L2=A ,G点 L1=L2=G;

2、中间控制点的位置由左右两个点的位置决定,例如C点的控制点位置通过计算BCD连接而成的三角形决定;

3、计算向量和 与三角形BCD的夹角 ;

4、计算垂直于三角形BCD所在平面的单位向量,计算方法为的向量积,再归一化;

5、向量绕轴旋转 ( - )/ 2 度 得到向量;

6、向量绕轴旋转 -( - )/ 2 度得到向量 ;

7、将5,6计算结果乘以一个比例因子的到向量CL1 与CL2(的大小决定曲线的形状,一般设置在0.5以下);

8、L1坐标 = CL1 + C , L2坐标 = CL2 + C;

    注:如果为180度,那么跳过4,5,6步的计算

————————————————

原文链接:https://blog.csdn.net/q943520218/article/details/103827268

猜你喜欢

转载自blog.csdn.net/weixin_42565127/article/details/128817127
今日推荐