图形学-几何-曲线-贝塞尔曲线

在空间中,曲线有重要的作用,例如可以在空间中定义一条曲线,摄像机或者物体沿着曲线运动;另外字体可以用曲线来表示,也成矢量,这样字体无论拉多大都不会出现锯齿。

 

 

 

   

 

 

 做一条曲线的方法,比较广为人知的是贝塞尔曲线,在PS之类的软件经常用到。

 贝塞尔曲线的表示方法

贝塞尔认为,用N个点(N≥3),可以表示一条唯一的曲线。下图表示用4个点表示一条曲线:

 

表示的规则为:

1.出发方向一定为P0->P1;

2.结束方向一定为P2->P3;

3.有一个点,按照上面规定的方向,随着时间t不断行走,从起点走到终点,走过的路径即为贝塞尔曲线。

也可以理解为,有无数个连续的点,每个点随着时间t有一个对应的坐标,这些坐标的集合即这条贝塞尔曲线。

因此计算贝塞尔曲线,相当于是求出一个公式,这个公式即P0-P3每个点与t的关系。

贝尔塞曲线的表示方法

下图表示一条3个点确定的贝尔塞曲线的表示方法:

 

 

 

1.在b0->b1,b1->b2两条直线上,都分别计算出一个点,这个点根据t值插值表示,如在b0->b1上表示为(1 − t)b0 + tb1;

 

 

 

2.得到的这2个点,连成1条线,再根据t值做插值。得到的这个点,即认为是在t时刻曲线上的一点

 

 

 

3.用这样的方法,只要t在[0, 1]上过一遍,即可得到曲线上所有的点。

 

 

 类似的,这是4个点的贝塞尔曲线。

点随着t的变化,可以用公式表示为

 

 

我们发现这个公式就是一个多项式展开式,每一项即为每个点与t的关系。如有3点,为有3个系数,分别与b0、b1、b2相乘,再相加。而系数就是多项式系数

也记为

 

类似的,如果有4个点,则肯定是4项相加(在二维或三维上通用),表示为

 

 

我们称这个多项式系数为“伯恩斯坦多项式

 

 从上图可以看到,伯恩斯坦多项式每一项的系数加起来等于1。说明伯恩斯坦多项式实际上做的事情是权重(点到t的距离)插值计算。

 

 

 用伯恩斯坦多项式的系数乘每个点,即得到N阶贝塞尔曲线的表达公式:

 

 

 

贝塞尔曲线的一些性质(以3个点为例):

 

1.曲线一定经过b0和b3;

2.起始点的切线长度是3倍的(b1-b0),终点的切线长度是3倍的(b3-b2);

3.仿射变换后的曲线,等于N个点先做仿射变换再连起来的曲线;

4.N个点做出的贝塞尔曲线,一定在由这几个点围城的凸包内。

 

 凸包性质可以用来判断,如果几个点做出的贝尔塞曲线是一条直线,那这几个点一定在一条直线上。

 

posted @ 2022-04-17 22:07  银龙背上的骑士  阅读(773)  评论(0编辑  收藏  举报