掌桥专利:专业的专利平台
掌桥专利
首页

一种基于弦长二分法的二次Bezier曲线插值方法

文献发布时间:2023-06-19 11:22:42


一种基于弦长二分法的二次Bezier曲线插值方法

技术领域

本发明涉及计算机图形学领域,具体是一种基于弦长二分法的二次Bezier曲线插值方法。

背景技术

Bezier曲线是一种以逼近为基础的参数曲线和曲面的设计方法。该方法用Bernstein多项式作为基函数,将函数逼近同几何表示结合起来,有着方便于曲线和曲面设计的性质,且易于编码实现。经过不断的发展,在一些大型的船舶、飞机和汽车外形的设计中都以Bezier曲线作为主体设计。Bezier曲线在各种CAD系统、计算动画、实体造型、三维变换中都有着广泛的应用。一般来说,Bezier曲线段可以拟合任何数目的控制点。

插值就是给定n个顶点,要求把这n个顶点链接称为平滑的曲线。现有的插值方法有:任意多项式插值、分段插值多项式、样条函数插值等方法。而在构造一条插值光顺样条曲线时,除了要选择使用一种具体插值参数样条曲线方法外,还需要根据具体情况构造首尾两点的初值条件。在游戏开发中,诸如动画系统。路径计算等等操作,都会遇到对数值进行插值的问题。由于Bezier曲线可由几个控制点绘制,所以在有限个点的条件下,Bezier可以满足插值的条件;保持在多条Bezier曲线在相连接处平滑即可保证得到一条整体光顺的曲线。在保证曲线的光滑连接下,若想要达到曲线形状更为贴合插值点,需要对构造曲线的参数进行修改。而当前使用较多的方法是,将曲线参数设置为1/2,在该条件下所绘制的曲线能够插值所给出的点,但却无法很好的表示插值点之间的距离关系和形状。

针对以上问题,本发明提出了一种基于弦长二分法的二次Bezier曲线插值方法。该方法从插值点之间的距离关系入手,将插值点之间的距离关系作为曲线的参数,从而对Bezier插值曲线的形状进行控制。总的来说,本发明能够在给定插值点的条件下,绘制出更符合插值点形状的插值曲线。

发明内容

解决的技术问题

本发明的目的在于提供一种基于弦长二分法的二次Bezier曲线插值方法,以解决现有插值方法无法较好贴合插值点,多插值点下曲线复杂度较高的技术问题。

技术方案

本发明采取的技术方案如下:

一种基于弦长二分法的二次Bezier曲线插值方法,包括如下步骤:

1)输入所需插值点Q0,Q1,…,Qn;

2)令Q0,Q2作为该特征多边形的首尾端点,链接Q0,Q1,Q2;令Q0,Q1的连线作为弦长l1,Q1,Q2的连线作为弦长l2;

3)根据弦长l1和l2构造二次Bezier所需的参数u,并使用Q1作为曲线上的点进行方程求解特征多边形顶点P;

4)通过弦长二分法及已知特征多边形顶点进行插值。

5)若插值点个数为3,则直接到步骤6);若插值点个数大于三,则令n=(n-1)/2,每隔一个点取一次首端点,重复步骤1);

6)保留弦长二分法的作图步骤及所有顶点,并输出图像。

步骤3)中,由参数u及点p

其中u由弦长l1和l2所决定:l1=|Q1Q0|,l2=|Q2Q1|,u=l1/(l1+l2),BST

此时Q0,Q2分别作为二次Bezier曲线的首尾端点p0和p2,待求特征多边形顶点P1。取定:

步骤4)中,通过二分法进行二次Bezier曲线作图,可使得每一条特征顶点的连线都分为两段,且比例为u:(1-u),由此可对式(1)进行改写:

P(u)=(1-u)(1-u)p0+u·p1]+u[(1-u)p1+u·p2](0≤u≤1) (4)

由此比例可做出一批辅助点,其且在u=1/2时,可得到:

这表明可以把一条二次Bezier曲线简单地分为以

将上述思想拓展到任意二分线段,仍然可得到式(6)的结果。将辅助点得计算与步骤3)中所求得的弦长关系u结合起来,可得到如下辅助点计算公式:

通过步骤2)计算得到u,计算出

本发明提供的一种基于弦长二分法的二次Bezier曲线插值方法,该方法引入弦长来刻画插值点的形状,基于Bezier曲线的性质构造未知的特征多边形顶点,结合Bezier曲线的二分作图法进行插值曲线的求解。测试结果表明,该方法能够绘制出正确的二次Bezier差值曲线,并保留插值点之间的距离信息,得到贴合插值点形状的曲线。

附图说明

图1是发明一种基于弦长二分法的二次Bezier曲线插值方法的框架流程图;

图2是在同样条件下本发明的插值效果与现有技术插值效果对比图;

图3是本实例在三个插值点下的插值效果图;

图4是本实例是多个插值点下得插值效果图。

具体实施方式

为使本发明实例目的、技术方案更加清晰,下面结合附图通过具体实例对本发明作进一步描述,以下列实例只是描述性的,非限定性,不能以此限定本发明的保护范围。

一种基于弦长二分法的二次Bezier曲线插值方法,如图1所示,包括以下步骤:

1)输入所需插值点Q0,Q1,…,Qn;

2)令Q0,Q2作为该特征多边形的首尾端点,链接Q0,Q1,Q2;令Q0,Q1的连线作为弦长l1,Q1,Q2的连线作为弦长l2;

3)根据弦长l1和l2构造二次Bezier所需的参数u,并使用Q1作为曲线上的点进行方程求解特征多边形顶点P;

4)通过弦长二分法及已知特征多边形顶点进行插值。

5)若插值点个数为3,则直接到步骤6);若插值点个数大于三,则令n=(n-1)/2,每隔一个点取一次首端点,重复步骤1);

6)保留弦长二分法的作图步骤及所有顶点,并输出图像。

步骤3)中,由参数u及点p

其中u由弦长l1和l2所决定:l1=|Q1Q0|,l2=|Q2Q1|,u=l1/(l1+l2),BST

此时Q0,Q2分别作为二次Bezier曲线的首尾端点p0和p2,待求特征多边形顶点P1。取定:

步骤4)中,通过二分法进行二次Bezier曲线作图,可使得每一条特征顶点的连线都分为两段,且比例为u:(1-u),由此可对式(1)进行改写:

P(u)=(1-u)[(1-u)p0+u·p1]+u[(1-u)p1+u·p2](0≤u≤1) (4)

由此比例可做出一批辅助点,其且在

并可改写上式(4):

这表明可以把一条二次Bezier曲线简单地分为以

将上述思想拓展到任意二分线段,仍然可得到式(6)的结果。将辅助点得计算与步骤3)中所求得的弦长关系u结合起来,可得到如下辅助点计算公式:

本实例中,基本思想是采用基于弦长二分法的二次Bezier曲线进行已知点插值,使得插值曲线贴合插值点所构成的形状。为保留插值点之间的形状信息,将插值点进行两两连线,通过u表示插值点之间的距离信息,并转换成曲线上的插值点形状信息。利用已知信息反向求解二次Bezier曲线函数得到控制顶点,在三个控制顶点都已知的情况下可绘制出相应的插值曲线。最后选定用二分法作图进行曲线绘制,构造一批辅助点,将曲线细分成多段,使得该曲线更加贴合插值点。如图2(b)、图3、图4均本实例实施所述的方法插值的曲线实例。如图2所示,a为参数u设置为1/2的条件下的插值曲线,b为本发明方法下的差值曲线。可以看出,在本实例下,曲线能够更好的保留插值点的形状。图3为本实例在三个插值点下的效果图。图4为本实例在多个插值点下的效果图。

以上所述仅为本发明的部分实例,不用于限制本发明。,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于弦长二分法的二次Bezier曲线插值方法
  • 一种基于Bezier曲线转角平滑过渡算法的加工方法
技术分类

06120112900591