Print

发布时间: 2018-09-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.180005
2018 | Volume 23 | Number 9




    计算机图形学    




  <<上一篇 




  下一篇>> 





Bézier曲线的同次扩展及其参数选择
expand article info 严兰兰, 饶智勇, 黄涛
东华理工大学理学院, 南昌 330013

摘要

目的 本文旨在构造一种含形状参数的Bézier曲线,要求该曲线定义在代数多项式空间上,其基函数的次数与相同数量控制顶点所需Bernstein基函数的次数相同,对基函数以及相应曲线的计算要尽可能简单,并且要给出常见设计要求下曲线中形状参数的选取方案。方法 以三次Bézier曲线为初始研究对象,依据由可调控制顶点定义可调曲线的思想,在两个内控制顶点中引入参数,与Bernstein基函数作线性组合生成形状可调曲线,再将曲线表达式改写成固定控制顶点与含参数的调配函数的线性组合,从而得出三次Bernstein基函数的含参数扩展基,借助递推公式得出更高次的含参数扩展基,然后观察基函数表达式的规律,给出所有含参数扩展基统一的显示表达式,分析了扩展基的性质,并由之定义含参数的曲线,分析了曲线的性质,给出了曲线的几何作图法以及光滑拼接条件,以曲线拉伸能量、弯曲能量、扭曲能量近似最小为目标,推导了曲线中形状参数的计算公式,再通过曲线图和曲率图对比分析了不同能量目标所得曲线的差异。结果 由于所给含参数的扩展基并未提升Bernstein基函数的次数,且具有统一的显示表达式,因此本文方法在赋予Bézier曲线形状调整能力的同时并未增加计算量,由于提供了可以直接使用的形状参数的计算公式,因此在使用该方法时,符合设计要求的形状参数的确定变得简单,数值实例直观显示了所给曲线造型方法以及曲线中形状参数选取方案的正确性与有效性,体现了本文方法较文献中类似方法的优越之处。结论 所给含参数扩展基的构造方法以及形状参数的选取方法具有一般性,该方法可以推广至构造含形状参数的三角域Bézier曲面。

关键词

曲线造型; Bézier曲线; 形状参数; 能量优化; 参数选择

Extension of Bézier curves of the same degree and parameter selection
expand article info Yan Lanlan, Rao Zhiyong, Huang Tao
College of Science, East China University of Technology, Nanchang 330013, China
Supported by: National Natural Science Foundation of China (11261003, 11761008)

Abstract

Objective The purpose of this paper is to construct a type of Bézier curve with a shape parameter. We require the curves defined in algebraic polynomial space. The degree of the basis functions should be the same as the Bernstein basis functions, which needed the same number of control points. The calculation of the basis functions and corresponding curves should be as simple as possible. The selection scheme under common design requirements of the shape parameter in the curves should be provided. Method With the cubic Bézier curve as the initial research object and in accordance with the idea of defining a shape-adjustable curve by using adjustable control points, we introduce a parameter into the two inner control points. Let the control points with the parameter have a linear combination with the Bernstein basis functions to generate the shape adjustable curves. By rewriting the expression of the curves as the linear combination of the fixed control points and the blending functions with the parameter, we obtain the extended basis with the parameter of the cubic Bernstein basis functions. By using the recursive formula, we obtain the extended basis with the parameter of a high degree. Then, we observe the rule of the basis function expression and provide the uniform explicit expression of all extended basis functions with parameters. The properties of the extended basis functions are analyzed, and the corresponding curves with parameters are defined. The properties of the curves are analyzed. The geometric drawing method and smooth joining conditions of the curves are also provided. The calculation formula of the parameter, which causes the stretch, strain, and jerk energies of the curves to be approximately minimum, is deduced. The difference of the curves determined by different energy targets is compared and analyzed by using the graph of the curves and their curvatures. Result The method provides the Bézier curve shape adjustability without increasing the calculation amount due to the fact that the extended basis functions have the same degree as the Bernstein basis functions and have a uniform explicit expression. Determining the shape parameter that conforms to the design requirements when using this method is easy because the calculation formula of the shape parameter can be used directly. The numerical examples intuitively show the correctness and validity of the proposed curve modeling method and the shape parameter selection scheme in the curve. The illustration also shows the superiority of the method provided in this paper over similar methods presented in the literature. Conclusion The method of constructing an extended basis with the parameter and selection method of the shape parameter are general. This method can be extended to construct a triangular Bézier surface with parameter.

Key words

curve modeling; Bézier curve; shape parameter; energy minimization; parameter selection

0 引言

计算机辅助几何设计(CAGD)是随着航空、汽车等现代工业的发展与计算机的出现而产生与发展起来的一门新兴学科,其主要研究对象是工业产品的几何形状。工业产品的形状大致可分为两类:一类仅由初等解析曲面组成,可用解析几何方法表达;一类由自由型曲线曲面组成,例如飞机、汽车、船舶的外形零件。Bézier方法是CAGD中定义自由型曲线曲面的常用方法之一,该方法采用Bernstein多项式作为基函数,归功于Bernstein基函数的一些“几何直观的”性质[1],Bézier方法具有许多有利于形状设计的优良性质,使得该方法在实践中表现出强大的生命力。

虽然Bézier方法具有诸多优点,但也存在一些不足。例如:对于Bézier曲线曲面而言,当选定曲线曲面次数以后,其形状便由控制顶点唯一确定。为了对此进行改进,学者们给出了多种带形状参数的Bézier曲线曲面模型[2-15]。这些模型有的定义在多项式函数空间上[2-9],有的定义在非多项式函数空间上[10-15],如三角函数空间[10-12]、双曲函数空间[13-15]。建立这些模型的共同方法是构造含参数的调配函数,然后用调配函数与控制顶点作线性组合来定义曲线曲面。正是因为调配函数中含参数,所以选择不同的参数值,真正参与计算的调配函数是不一样的,这样一来,即使不改变控制顶点,曲线曲面的形状依然可以通过改变形状参数的取值来进行调整。

与经典的Bézier曲线曲面相比,带形状参数的Bézier曲线曲面提供了独立于控制顶点的形状调整自由度,但同时也增加了设计人员选择形状参数的工作量。因此,为带形状参数的Bézier曲线曲面模型提供形状参数的选取方案,对于增强这些模型的实用性具有积极意义。

在实际的曲线曲面造型设计中,设计人员比较关注的是曲线曲面的连续性和光顺性。对于Bézier型曲线曲面而言,一旦曲线曲面次数选定,连续性和光顺性这两个特征就直接取决于曲线曲面的控制顶点。这样一来,要想获得满意的形状,控制顶点的选择至关重要。文献[16]研究了在给定部分控制顶点的情况下,如何构造其他控制顶点,使得最终定义的Bézier曲线具有最小的能量,从而具有视觉上较优的形状。

文献[16]中使用的能量优化法是构造光顺曲线的常用方法,该方法在动画设计、计算机视觉、工业设计等领域有着广泛的应用。例如在船体、汽车车身的设计中,通常根据曲面上的关键曲线是否光顺以及曲面的主曲率、高斯曲率、平均曲率等变化是否均匀来判断曲面是否光顺。文献[17-20]研究了能量优化法在曲线曲面光顺处理中的应用。

采用能量优化法进行曲线设计,可以根据不同的设计要求选择不同的能量函数,这种方法具有可控性好、真实性强的特征。关于能量最小曲线造型方法的研究文献有很多[21-27],文献[28]则研究了曲线形状与能量之间的关系。

对于传统的Bézier方法而言,由于曲线曲面形状几乎由控制顶点唯一确定,所以当曲线曲面的连续性、光顺性达不到要求时,唯一的做法是调整控制顶点。然而这种方式不仅使用不方便,而且注意到有些时候曲线曲面控制顶点是事先给定的,不宜对其进行调整,特别是当控制顶点为取自实物的精确测量点时,对其调整是不可取的。在这种情况下,带形状参数的Bézier曲线曲面模型的优越性便凸显出来,因为设计人员可以不调整控制顶点,仅通过改变形状参数的取值来调整曲线曲面的连续性与光顺性[29]

虽然目前有众多文献给出了带形状参数的Bézier曲线曲面模型,但很少有文献从光顺性的角度给出形状参数取值的建议。另外,多项式函数是众多函数类型中计算最为简单的,且多项式调配函数易于表示成Bernstein基函数的线性组合,因此相应的曲线曲面模型易于统一到目前CAD/CAM系统中所使用的标准形式中来。鉴于此,本文希望给出一种新的定义在多项式函数空间上的含形状参数的Bézier曲线模型,并借助能量优化法给出形状参数取值的建议。

首先构造了一组含参数$\lambda $$n$次多项式函数,证明了该函数组具有类似于Bernstein基函数的诸多性质,给出了由该函数组定义的曲线的基本性质、几何作图法以及$G^1$光滑拼接条件,推导了使曲线拉伸能量、弯曲能量、扭曲能量近似最小时,曲线中形状参数$\lambda $的计算公式。与已有相关文献相比,本文优点在于对Bézier曲线作含参数的扩展时,既未改变基函数的多项式类型,又未提升基函数的多项式次数,并且给出了所有基函数统一的显示表达式,另外还给出了可以直接使用的通过能量最小化光顺方法得到的形状参数计算公式,极大方便了新曲线模型在几何造型设计中的应用。

1 调配函数及其性质

$t$∈[0, 1],$n$$\mathit{¥}$+$n$≥3,$\lambda $∈(-2, 1],记

$ \begin{array}{*{20}{c}} {b_i^n\left( t \right) = {\rm{C}}_n^i{{\left( {1 - t} \right)}^{n - i}}{t^i} + \left( {1 - \lambda } \right){{\left( {1 - t} \right)}^{n - i - 1}}{t^{i - 1}} \times }\\ {\left[ {{\rm{C}}_{n - 3}^{i - 3}{{\left( {1 - t} \right)}^2} - {\rm{C}}_{n - 2}^{i - 1}\left( {1 - t} \right)t + {\rm{C}}_{n - 3}^i{t^2}} \right]} \end{array} $ (1)

式中,$i$=0, 1, …, $n$。显然$b_i^n\left( t \right)$$n$次多项式函数,当$\lambda $=1时,$b_i^n\left( t \right)$即为第$i$$n$次Bernstein基函数。称函数组$\{ b_i^n\left( t \right)\} _{i = 0}^n$$n$次Bernstein基函数的同次含参数扩展,简称为$n$$\lambda $-Bernstein基函数。

为了方便,在不至于引起混淆时,文中将省略自变量的记号,例如将$b_i^n\left( t \right)$简记为$b_i^n$

命题1 $\lambda $-Bernstein基函数具有递推性,即

$ b_i^n = \left( {1 - t} \right)b_i^{n - 1} + tb_{i - 1}^{n - 1},t \in \left[ {0,1} \right] $ (2)

式中,$n$≥4,$i$=0, 1, …, $n$,并规定$b_{ - 1}^{n - 1} = b_n^{n - 1} = 0$

证明 记$B_i^n = {\rm{C}}_n^i{\left( {1 - t} \right)^{n - i}}{t^i}$$n$次Bernstein基函数,并记

$ \begin{array}{*{20}{c}} {A_i^n = {{\left( {1 - t} \right)}^{n - i - 1}}{t^{i - 1}}\left[ {{\rm{C}}_{n - 3}^{i - 3}{{\left( {1 - t} \right)}^2} - } \right.}\\ {\left. {{\rm{C}}_{n - 2}^{i - 1}\left( {1 - t} \right)t + {\rm{C}}_{n - 3}^i{t^2}} \right]} \end{array} $

$ b_i^n = B_i^n + \left( {1 - \lambda } \right)A_i^n $

由于$B_i^n$具有递推性,即

$ B_i^n = \left( {1 - t} \right)B_i^{n - 1} + tB_{i - 1}^{n - 1} $

因此接下来只需注明$A_i^n$也具有递推性即可。而

$ \begin{array}{*{20}{c}} {\left( {1 - t} \right)A_i^{n - 1} + tA_{i - 1}^{n - 1} = }\\ {{{\left( {1 - t} \right)}^{n - 1 - i}}{t^{i - 1}}\left[ {{\rm{C}}_{n - 4}^{i - 3}{{\left( {1 - t} \right)}^2} - {\rm{C}}_{n - 3}^{i - 1}\left( {1 - t} \right)t + } \right.}\\ {\left. {{\rm{C}}_{n - 4}^i{t^2}} \right] + {{\left( {1 - t} \right)}^{n - i - 1}}{t^{i - 1}}\left[ {{\rm{C}}_{n - 4}^{i - 4}{{\left( {1 - t} \right)}^2} - } \right.}\\ {\left. {{\rm{C}}_{n - 3}^{i - 3}\left( {1 - t} \right)t + {\rm{C}}_{n - 4}^{i - 1}{t^2}} \right] = {{\left( {1 - t} \right)}^{n - i - 1}}{t^{i - 1}}}\\ {\left[ {{\rm{C}}_{n - 3}^{i - 3}{{\left( {1 - t} \right)}^2} - {\rm{C}}_{n - 2}^{i - 1}\left( {1 - t} \right)t + {\rm{C}}_{n - 3}^i{t^2}} \right] = A_i^n} \end{array} $

故得证。

命题2 当$\lambda $∈(-2, 1]时,对所有$n$≥3,$n$$\lambda $-Bernstein基函数非负。

证明 由式(1)可知

$ \left\{ \begin{array}{l} b_0^3 = \left( {1 - \lambda t} \right){\left( {1 - t} \right)^2}\\ b_1^3 = \left( {2 + \lambda } \right)t{\left( {1 - t} \right)^2}\\ b_2^3 = \left( {2 + \lambda } \right){t^2}\left( {1 - t} \right)\\ b_3^3 = \left( {1 - \lambda + \lambda t} \right){t^2} \end{array} \right. $ (3)

易知当$\lambda $∈(-2, 1]时,$b_i^3 \ge 0\left( {i = 0,{\rm{ }}1,{\rm{ }}2,{\rm{ }}3} \right)$,再结合式(2)可知,对$n$≥4,有$b_i^n$≥0($i$=0, 1, …, $n$)。证毕。

命题3 对所有$n$≥3,$n$$\lambda $-Bernstein基函数具有规范性。

证明 由式(3)可知

$ \left\{ \begin{array}{l} b_0^3 = B_0^3 + \frac{{1 - \lambda }}{3}B_1^3\\ b_1^3 = \frac{{2 + \lambda }}{3}B_1^3\\ b_2^3 = \frac{{2 + \lambda }}{3}B_2^3\\ b_3^3 = \frac{{1 - \lambda }}{3}B_2^3 + B_3^3 \end{array} \right. $ (4)

由3次Bernstein基函数的规范性可知$\sum\limits_{i = 0}^3 {b_i^3} = 1$。假设当$n=k$时,$n$$\lambda $-Bernstein基函数具有规范性,则当$n=k+1$时,由式(2)可得

$ \begin{array}{*{20}{c}} {\sum\limits_{i = 0}^{k + 1} {b_i^{k + 1}} = \left( {1 - t} \right)\sum\limits_{i = 0}^k {b_i^k} + t\sum\limits_{i - 1 = 0}^k {b_{i - 1}^k} = }\\ {\left( {1 - t} \right) + t = 1} \end{array} $

证毕。

命题4 对所有$n$≥3,$n$$\lambda $-Bernstein基函数具有对称性,即$b_i^n\left( {1 - t} \right) = b_{n - i}^n\left( t \right)$,其中$i$=0, 1, …, $n$

证明 当$n$=3时,由式(4)及3次Bernstein基函数的对称性,易知函数组$\{ b_i^3\} _{i = 0}^3$具有对称性。假设当$n=k$时,对称性成立,则当$n=k+1$时,由式(2)可得

$ \begin{array}{*{20}{c}} {b_i^{k + 1}\left( {1 - t} \right) = tb_i^k\left( {1 - t} \right) + \left( {1 - t} \right)b_{i - 1}^k\left( {1 - t} \right) = }\\ {tb_{k - i}^k\left( t \right) + \left( {1 - t} \right)b_{k + 1 - i}^k\left( t \right) = b_{k + 1 - i}^{k + 1}\left( t \right)} \end{array} $

证毕。

命题5 当$\lambda $∈(-2, 1]时,对所有$n$≥3,$n$$\lambda $-Bernstein基函数线性无关。

证明 当$n$=3时,考虑线性组合

$ \sum\limits_{i = 0}^3 {{k_i}b_i^3} = 0 $

式中,${k_i} \in {\bf{R}}\left( {i = 0,{\rm{ }}1,{\rm{ }}2,{\rm{ }}3} \right)$,将式(4)代入上式并整理可得

$ \begin{array}{*{20}{c}} {{k_0}B_0^3 + \left( {\frac{{1 - \lambda }}{3}{k_0} + \frac{{2 + \lambda }}{3}{k_1}} \right)B_1^3 + }\\ {\left( {\frac{{2 + \lambda }}{3}{k_2} + \frac{{1 - \lambda }}{3}{k_3}} \right)B_2^3 + {k_3}B_3^3 = 0} \end{array} $

由3次Bernstein基函数的线性无关性可得

$ \left\{ \begin{array}{l} {k_0} = 0\\ \frac{{1 - \lambda }}{3}{k_0} + \frac{{2 + \lambda }}{3}{k_1} = 0\\ \frac{{2 + \lambda }}{3}{k_2} + \frac{{1 - \lambda }}{3}{k_3} = 0\\ {k_3} = 0 \end{array} \right. $

注意到$\lambda $≠-2,解出$k_i$=0($i$=0, 1, 2, 3),这表明函数组$\{ b_i^3\} _{i = 0}^3$线性无关。假设函数组$\{ b_i^k\} _{i = 0}^k$线性无关,接下来证明函数组$\{ b_i^{k + 1}\} _{i = 0}^{k + 1}$也线性无关。考虑线性组合

$ \sum\limits_{i = 0}^{k + 1} {{l_i}b_i^{k + 1}} = 0 $

式中,${l_i} \in {\bf{R}}\left( {i = 0,{\rm{ }}1,{\rm{ }} \ldots ,{\rm{ }}k + 1} \right)$,将式(2)代入上式并整理可得

$ \left( {1 - t} \right)\sum\limits_{i = 0}^k {{l_i}b_i^k} + t\sum\limits_{i = 1}^{k + 1} {{l_i}b_{i - 1}^k} = 0 $

注意到上式对区间[0, 1]内所有$t$值均成立,因此

$ \sum\limits_{i = 0}^k {{l_i}b_i^k} = 0 $ (5)

$ \sum\limits_{i = 1}^{k + 1} {{l_i}b_{i - 1}^k} = 0 $ (6)

由归纳假设和式(5)可得$l_i$=0($i$=0, 1, …, $k$),由归纳假设和式(6)可得$l_i$=0($i$=1, 2, …, $k$+1),因此所有$l_i$=0($i$=0, 1, …, $k$+1)。证毕。

命题6 对所有$n$≥3,$n$$\lambda $-Bernstein基函数可以表示成3个相邻$n$次Bernstein基函数的线性组合,即

$ \begin{array}{*{20}{c}} {b_i^n = \frac{{{\rm{C}}_{n - 3}^{i - 3}\left( {1 - \lambda } \right)}}{{{\rm{C}}_n^{i - 1}}}B_{i - 1}^n + \frac{{\left( {{\rm{C}}_n^i - {\rm{C}}_{n - 2}^{i - 1}} \right) + {\rm{C}}_{n - 2}^{i - 1}\lambda }}{{{\rm{C}}_n^i}}B_i^n + }\\ {\frac{{{\rm{C}}_{n - 3}^i\left( {1 - \lambda } \right)}}{{{\rm{C}}_n^{i + 1}}}B_{i + 1}^n} \end{array} $ (7)

式中,$B_i^n\left( t \right)$$n$次Bernstein基函数,规定当$i$ < 0或$i$>$n$时,${\rm{C}}_n^i = 0$

证明 直接由式(1)即可得到。

命题7 对所有$n$≥3以及$i$=0, 1, …, $n$,有

$ \left\{ \begin{array}{l} b_i^n\left( 0 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} 1\\ 0 \end{array}&\begin{array}{l} i = 0\\ i \ne 0 \end{array} \end{array}} \right.\\ b_i^n\left( 1 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} 1\\ 0 \end{array}&\begin{array}{l} i = n\\ i \ne n \end{array} \end{array}} \right. \end{array} \right. $ (8)

$ \left\{ \begin{array}{l} b{_i^n }'\left( 0 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} - \left( {n - 1 + \lambda } \right)\\ n - 1 + \lambda \\ 0 \end{array}&\begin{array}{l} i = 0\\ i = 1\\ i \ne 0,1 \end{array} \end{array}} \right.\\ b{_i^n }'\left( 1 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} - \left( {n - 1 + \lambda } \right)\\ n - 1 + \lambda \\ 0 \end{array}&\begin{array}{l} i = n - 1\\ i = n\\ i \ne n - 1,n \end{array} \end{array}} \right. \end{array} \right. $ (9)

证明 注意到Bernstein基函数的端点性质

$ \left\{ \begin{array}{l} B_i^n\left( 0 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} 1\\ 0 \end{array}&\begin{array}{l} i = 0\\ i \ne 0 \end{array} \end{array}} \right.\\ B_i^n\left( 1 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} 1\\ 0 \end{array}&\begin{array}{l} i = n\\ i \ne n \end{array} \end{array}} \right. \end{array} \right. $ (10)

$ \left\{ \begin{array}{l} B{_i^n }'\left( 0 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} - n\\ n\\ 0 \end{array}&\begin{array}{l} i = 0\\ i = 1\\ i \ne 0,1 \end{array} \end{array}} \right.\\ B{_i^n}'\left( 1 \right) = \left\{ {\begin{array}{*{20}{c}} \begin{array}{l} - n\\ n\\ 0 \end{array}&\begin{array}{l} i = n - 1\\ i = n\\ i \ne n - 1,n \end{array} \end{array}} \right. \end{array} \right. $ (11)

由式(7)(10)易得

$ \left\{ \begin{array}{l} b_0^n\left( 0 \right) = \frac{{{\rm{C}}_n^0}}{{{\rm{C}}_n^0}}B_0^n\left( 0 \right) + \frac{{{\rm{C}}_{n - 3}^0\left( {1 - \lambda } \right)}}{{{\rm{C}}_n^1}}B_1^n\left( 0 \right) = \\ B_0^n\left( 0 \right) = 1\\ b_i^n\left( 0 \right) = 0\left( {i \ne 0} \right)\\ b_i^n\left( 1 \right) = 0\left( {i \ne n} \right)\\ b_n^n\left( 1 \right) = \frac{{{\rm{C}}_{n - 3}^{n - 3}\left( {1 - \lambda } \right)}}{{{\rm{C}}_n^{n - 1}}}B_{n - 1}^n\left( 1 \right) + \frac{{{\rm{C}}_n^n}}{{{\rm{C}}_n^n}}B_n^n\left( 1 \right) = \\ B_n^n\left( 1 \right) = 1 \end{array} \right. $

这表明式(8)成立。由式(7)(11)易得

$ \left\{ \begin{array}{l} b{_0^n}'\left( 0 \right) = \frac{{{\rm{C}}_n^0}}{{{\rm{C}}_n^0}}B{_0^n}'\left( 0 \right) + \frac{{{\rm{C}}_{n - 3}^0\left( {1 - \lambda } \right)}}{{{\rm{C}}_n^1}}B{_1^n}'\left( 0 \right) = \\ \;\;\;\;\;\;\;\;\;\;\;\; - \left( {n - 1 + \lambda } \right)\\ b{_1^n}'\left( 0 \right) = \frac{{\left( {{\rm{C}}_n^1 - {\rm{C}}_{n{\rm{ - 2}}}^0} \right) + {\rm{C}}_{n - 2}^0\lambda }}{{{\rm{C}}_{\rm{n}}^1}}B{_1^n}'\left( 0 \right) = \\ \;\;\;\;\;\;\;\;\;\;\;\;\;n - 1 + \lambda \\ b{_i^n}'\left( 0 \right) = 0\left( {i \ne 0,1} \right)\\ b{_i^n}'\left( 1 \right) = 0\left( {i \ne n - 1,n} \right)\\ b{_{n - 1}^n}'\left( 1 \right) = \frac{{\left( {{\rm{C}}_n^{n - 1} - {\rm{C}}_{n - 2}^0} \right) + {\rm{C}}_{n - 2}^{n - 2}\lambda }}{{{\rm{C}}_n^{n - 1}}}B{_{n - 1}^n}'\left( 1 \right) = \\ \;\;\;\;\;\;\;\;\;\;\;\;\; - \left( {n - 1 + \lambda } \right)\\ b{_n^n}'\left( 1 \right) = \frac{{{\rm{C}}_{n - 3}^{n - 3}\left( {1 - \lambda } \right)}}{{{\rm{C}}_n^{n - 1}}}B{_{n - 1}^n}'\left( 1 \right) + \frac{{{\rm{C}}_n^n}}{{{\rm{C}}_n^i}}B{_n^n}'\left( 1 \right) = \\ \;\;\;\;\;\;\;\;\;\;\;\;n - 1 + \lambda \end{array} \right. $

这表明式(9)成立。证毕。

2 可调曲线及其性质

给定控制顶点${\mathit{\boldsymbol{V}}_i} \in {{\bf{R}}^d}(d = 2,3;i = 0,1, \ldots ,n)$,可以定义曲线

$ \mathit{\boldsymbol{p}}\left( t \right) = \sum\limits_{i = 0}^n {b_i^n\left( t \right){\mathit{\boldsymbol{V}}_i}} $ (12)

式中,$t$∈[0, 1],$\{ b_i^n\left( t \right)\} _{i = 0}^n\left( {n \ge 3} \right)$$n$$\lambda $-Bernstein基函数。称$\mathit{\boldsymbol{p}}\left( t \right)$$n$$\lambda $-Bézier曲线。

根据$\lambda $-Bernstein基函数的性质,可以推知$\lambda $-Bézier曲线具有类似于Bézier曲线的凸包性、对称性、几何不变性、仿射不变性、端点插值性、端边相切性。除此之外,由于调配函数中含参数$\lambda $,故$\lambda $-Bézier曲线还具有形状可调性。

命题8 给定参数值$t$∈[0, 1],可以采用递推求值算法来计算$n$($n$≥3)次$\lambda $-Bézier曲线上相应的点$\mathit{\boldsymbol{p}}\left( t \right)$,即

$ \begin{array}{*{20}{c}} {\mathit{\boldsymbol{p}}\left( t \right) = \sum\limits_{i = 0}^n {b_i^n\mathit{\boldsymbol{V}}_i^0} = \sum\limits_{i = 0}^{n - 1} {b_i^{n - 1}\mathit{\boldsymbol{V}}_i^1} = L = }\\ {\sum\limits_{i = 0}^3 {b_i^3\mathit{\boldsymbol{V}}_i^{n - 3}} = \sum\limits_{i = 0}^3 {B_i^3\mathit{\boldsymbol{Q}}_i^{n - 2}} = L = \mathit{\boldsymbol{Q}}_i^{n + 1}} \end{array} $ (13)

式中,$\mathit{\boldsymbol{V}}_i^0 = {\mathit{\boldsymbol{V}}_i}\left( {i = 0,1, \ldots ,n} \right)$,点$\mathit{\boldsymbol{V}}_i^l\left( {l = 1,2, \ldots ,n - 3} \right)$递推定义为

$ \mathit{\boldsymbol{V}}_i^l = \left( {1 - t} \right)\mathit{\boldsymbol{V}}_i^{l - 1} + t\mathit{\boldsymbol{V}}_{i + 1}^{l - 1};i = 0,1, \cdots ,n - l $ (14)

$\mathit{\boldsymbol{Q}}_i^l\left( {l = n - 1,{\rm{ }}n,{\rm{ }}n + 1} \right)$递推定义为

$ \begin{array}{*{20}{c}} {\mathit{\boldsymbol{Q}}_i^l = \left( {1 - t} \right)\mathit{\boldsymbol{Q}}_i^{l - 1} + t\mathit{\boldsymbol{Q}}_{i + 1}^{l - 1}}\\ {i = 0,1, \cdots ,n + 1 - l} \end{array} $ (15)

$l=n-2$

$ \left\{ \begin{array}{l} \mathit{\boldsymbol{Q}}_0^{n - 2} = \mathit{\boldsymbol{V}}_0^{n - 3}\\ \mathit{\boldsymbol{Q}}_1^{n - 2} = \frac{{1 - \lambda }}{3}\mathit{\boldsymbol{V}}_0^{n - 3} + \frac{{2 + \lambda }}{3}\mathit{\boldsymbol{V}}_1^{n - 3}\\ \mathit{\boldsymbol{Q}}_2^{n - 2} = \frac{{2 + \lambda }}{3}\mathit{\boldsymbol{V}}_2^{n - 3} + \frac{{1 - \lambda }}{3}\mathit{\boldsymbol{V}}_3^{n - 3}\\ \mathit{\boldsymbol{Q}}_3^{n - 2} = \mathit{\boldsymbol{V}}_3^{n - 3} \end{array} \right. $ (16)

证明 将式(2)代入式(12)并整理可得

$ \begin{array}{*{20}{c}} {\mathit{\boldsymbol{p}}\left( t \right) = \sum\limits_{i = 0}^n {b_i^n{\mathit{\boldsymbol{V}}_i}} = \left( {1 - t} \right)\sum\limits_{i = 0}^n {b_i^{n - 1}{\mathit{\boldsymbol{V}}_i}} + t\sum\limits_{i = 0}^n {b_{i - 1}^{n - 1}{\mathit{\boldsymbol{V}}_i}} = }\\ {\left( {1 - t} \right)\sum\limits_{i = 0}^{n - 1} {b_i^{n - 1}{\mathit{\boldsymbol{V}}_i}} + t\sum\limits_{i = 0}^{n - 1} {b_i^{n - 1}{\mathit{\boldsymbol{V}}_{i + 1}}} = }\\ {\sum\limits_{i = 0}^{n - 1} {\left[ {\left( {1 - t} \right){\mathit{\boldsymbol{V}}_i} + t{\mathit{\boldsymbol{V}}_{i + 1}}} \right]b_i^{n - 1}} } \end{array} $

应用该结论$n$-3次,可得式(13)中第1行关系式以及式(14)。另外,由式(4)可知3次$\lambda $-Bézier曲线可以表示成3次Bézier曲线,即

$ \begin{array}{*{20}{c}} {\sum\limits_{i = 0}^n {b_i^3{\mathit{\boldsymbol{V}}_i}} = B_0^3{\mathit{\boldsymbol{V}}_0} + B_1^3\left( {\frac{{1 - \lambda }}{3}{\mathit{\boldsymbol{V}}_0} + \frac{{2 + \lambda }}{3}{\mathit{\boldsymbol{V}}_1}} \right) + }\\ {B_2^3\left( {\frac{{2 + \lambda }}{3}{\mathit{\boldsymbol{V}}_2} + \frac{{1 - \lambda }}{3}{\mathit{\boldsymbol{V}}_3}} \right) + B_3^3{\mathit{\boldsymbol{V}}_3} = \sum\limits_{i = 0}^3 {B_i^3{\mathit{\boldsymbol{Q}}_i}} } \end{array} $

显然,从该关系式中可以导出式(16)。然后,对3次Bézier曲线执行de casteljau算法,最后得到的点即为$n$$\lambda $-Bézier曲线上的点。运用de casteljau算法的理论即可得到式(13)中第2行的关系以及式(15)。证毕。

式(16)具有明确的几何意义:点$\mathit{\boldsymbol{Q}}_0^{n - 2}$$\mathit{\boldsymbol{Q}}_0^{n - 3}$重合,点$\mathit{\boldsymbol{Q}}_1^{n - 2}$位于线段$\mathit{\boldsymbol{V}}_0^{n - 3}\mathit{\boldsymbol{V}}_1^{n - 3}$上且分该线段的比为(2+$\lambda $):(1-$\lambda $),点$\mathit{\boldsymbol{Q}}_2^{n - 2}$位于线段$\mathit{\boldsymbol{V}}_2^{n - 3}\mathit{\boldsymbol{V}}_3^{n - 3}$上且分该线段的比为(1-$\lambda $):(2+$\lambda $),点$\mathit{\boldsymbol{Q}}_3^{n - 2}$$\mathit{\boldsymbol{V}}_3^{n - 3}$重合。由此并结合命题8可知,完全可以采用几何作图的方法得到$n$$\lambda $-Bézier曲线上指定参数所对应的点。

给定参数值$t = \frac{2}{3}$,并选择形状参数$\lambda = \frac{1}{2}$图 1演示了5次$\lambda $-Bézier曲线的递推求值过程。图中初始控制顶点用黑色圆圈标示,第1次递推所得控制顶点用红色菱形标示,第2次递推所得控制顶点用黑色菱形标示,转化为3次Bézier曲线后所得控制顶点用蓝色正方形标示,第3次递推所得控制顶点用黑色下三角形标示,第4次递推所得控制顶点用红色圆圈标示,第5次递推所得控制顶点用黑色圆点标示,该点也就是5次$\lambda $-Bézier曲线对应于参数$t=2/3$的那一点。

图 1 $\lambda $-Bézier曲线的几何作图法
Fig. 1 Geometric drawing method of $\lambda $-Bézier curve

命题9 给定含参数$\lambda_1 $∈(-2, 1]的$m$($m$≥3)次$\lambda $-Bézier曲线${\mathit{\boldsymbol{p}}_1}\left( t \right)$,以及含参数$\lambda_2 $∈(-2, 1]的$n$($n$≥3)次$\lambda $-Bézier曲线${\mathit{\boldsymbol{p}}_2}\left( t \right)$,即

$ \left\{ \begin{array}{l} {\mathit{\boldsymbol{p}}_1}\left( t \right) = \sum\limits_{i = 0}^m {b_i^m\left( {t;{\lambda _1}} \right){\mathit{\boldsymbol{V}}_{1i}}} \\ {\mathit{\boldsymbol{p}}_2}\left( t \right) = \sum\limits_{i = 0}^n {b_i^n\left( {t;{\lambda _2}} \right){\mathit{\boldsymbol{V}}_{2i}}} \end{array} \right. $ (17)

式中,$t$∈[0, 1],若

$ \left\{ \begin{array}{l} {\mathit{\boldsymbol{V}}_{20}} = {\mathit{\boldsymbol{V}}_{1m}}\\ {\mathit{\boldsymbol{V}}_{21}} = {\mathit{\boldsymbol{V}}_{20}} + C\left( {{\mathit{\boldsymbol{V}}_{1m}} - {\mathit{\boldsymbol{V}}_{1,m - 1}}} \right) \end{array} \right. $ (18)

式中,$C$>0,则曲线${\mathit{\boldsymbol{p}}_1}\left( t \right)$${\mathit{\boldsymbol{p}}_2}\left( t \right)$在公共连接点处G1连续。

证明 由式(8)(9)(17)可得

$ \left\{ \begin{array}{l} {\mathit{\boldsymbol{p}}_1}\left( 1 \right) = {\mathit{\boldsymbol{V}}_{1m}}\\ {{\mathit{\boldsymbol{p'}}}_1}\left( 1 \right) = \left( {m - 1 + {\lambda _1}} \right)\left( {{\mathit{\boldsymbol{V}}_{1m}} - {\mathit{\boldsymbol{V}}_{1,m - 1}}} \right)\\ {\mathit{\boldsymbol{p}}_2}\left( 0 \right) = {\mathit{\boldsymbol{V}}_{20}}\\ {{\mathit{\boldsymbol{p'}}}_2}\left( 0 \right) = \left( {n - 1 + {\lambda _2}} \right)\left( {{\mathit{\boldsymbol{V}}_{21}} - {\mathit{\boldsymbol{V}}_{20}}} \right) \end{array} \right. $

因此当式(18)中所给条件满足时,有

$ \left\{ \begin{array}{l} {\mathit{\boldsymbol{p}}_2}\left( 0 \right) = {\mathit{\boldsymbol{p}}_1}\left( 1 \right)\\ {{\mathit{\boldsymbol{p'}}}_2}\left( 0 \right) = \beta {{\mathit{\boldsymbol{p'}}}_1}\left( 1 \right) \end{array} \right. $

式中,$\beta = \frac{{(n - 1 + {\lambda _2})C}}{{m - 1 + {\lambda _1}}} > 0$,这表明两条曲线在公共连接点处${G^1}$连续。证毕。

从式(18)可以看出,$\lambda $-Bézier曲线的G1光滑拼接条件与Bézier曲线的相同。一旦组合曲线的控制顶点给定,组合Bézier曲线的形状便唯一确定,但组合$\lambda $-Bézier曲线的形状可以通过改变形状参数的取值来进行调整。对于单段$\lambda $-Bézier曲线而言,形状参数$\lambda $是全局参数,改变形状参数的取值,整条曲线段的形状都会发生改变。对于组合$\lambda $-Bézier曲线而言,各条曲线段中形状参数的改变仅影响对应那一条曲线段的形状,因此各曲线段中的参数对于整条组合曲线而言是局部参数。整条组合$\lambda $-Bézier曲线的形状可以在不改变分段连接点处连续阶的情况下,通过改变其部分段中参数$\lambda $的方式进行局部调整,也可以通过改变所有段中参数$\lambda $的方式进行全局调整。

对于传统Bézier曲线而言,应用时的局限之一在于曲线的形状控制不具有局部性,改变任何一个控制顶点的位置都会引起整条曲线形状的改变。在组合Bézier曲线中,改变那些在光滑拼接条件中未涉及的控制顶点,只会改变当前曲线段的形状。也就是说,组合Bézier曲线的形状可以在不改变连接点处光滑度的前提下作局部修改。从这个意义上讲,组合Bézier曲线具有局部形状控制性。对于组合$\lambda $-Bézier曲线而言,除了可以通过改变那些在拼接条件中未涉及的控制顶点来局部改变组合曲线的形状以外,还可以在不改变任何控制顶点的情况下,仅通过改变部分段中参数$\lambda $的方式,在不破坏分段曲线连接光滑度的前提下,作局部形状修改。这也是在Bézier曲线中引入形状参数的意义所在。

图 2以组合3次$\lambda $-Bézier曲线为例演示了形状参数在组合$\lambda $-Bézier曲线形状调整中的作用。组合曲线控制顶点用黑色圆圈标示,位于最下方的控制顶点为第1段的首控制顶点,同时为第3段的末控制顶点,第1段与第2段、第2段与第3段的控制顶点之间满足G1光滑拼接条件。黑色曲线为所有段均取$\lambda $=1所得到的组合3次$\lambda $-Bézier曲线,同时也是组合3次Bézier曲线。在此基础上,将第1段、第3段形状参数均改为$\lambda $=0,这两段的形状发生改变,用黑色点线标示,第2段形状保持不变。将所有段的形状参数均改为$\lambda $=-1.5,整条组合曲线的形状发生改变,用红色实线标示。

图 2 组合$\lambda $-Bézier曲线的形状调整
Fig. 2 Shape adjustment of composite $\lambda $-Bézier curve

3 形状参数的选择

选择文献[16]中的3种能量函数

$ {E_k} = \int_0^1 {{\mathit{\boldsymbol{p}}^{\left( k \right)}}\left( t \right) \cdot {\mathit{\boldsymbol{p}}^{\left( k \right)}}\left( t \right){\rm{d}}t} ,\;\;\;\;\;\;k = 1,2,3 $

$k$=1时$E_k$为拉伸能量的近似,其反映的是曲线长度;当$k$=2时$E_k$为弯曲能量的近似,其反映的是曲线的曲率;当$k$=3时$E_k$为扭曲能量的近似,其反映的是曲线曲率的变化量。

接下来,推导使$E_k$($k$=1, 2, 3)取最小值的参数$\lambda $的计算公式。

将式(7)代入式(12)并整理,可得

$ \begin{array}{l} \quad \mathit{\boldsymbol{p}}\left( t \right) = \sum\limits_{i = 0}^n {\left( {{\mathit{\boldsymbol{Q}}_i} - \lambda {\mathit{\boldsymbol{W}}_i}} \right)B_i^n} \\ \left\{ \begin{array}{l} {\mathit{\boldsymbol{Q}}_i} = {\mathit{\boldsymbol{W}}_i} + {\mathit{\boldsymbol{V}}_i}\\ {\mathit{\boldsymbol{W}}_i} = \frac{1}{{{\rm{C}}_n^i}}\left( {{\rm{C}}_{n - 3}^{i - 2}{\mathit{\boldsymbol{V}}_{i + 1}} - {\rm{C}}_{n - 2}^{i - 1}{\mathit{\boldsymbol{V}}_i} + {\rm{C}}_{n - 3}^{i - 1}{\mathit{\boldsymbol{V}}_{i - 1}}} \right) \end{array} \right. \end{array} $

$\mathit{\boldsymbol{p}}\left( t \right)$$k$($k$=1, 2, 3)阶导数,可得

$ \begin{array}{*{20}{c}} {{\mathit{\boldsymbol{p}}^{\left( k \right)}}\left( t \right) = \frac{{n!}}{{\left( {n - k} \right)!}} \times }\\ {\sum\limits_{i = 0}^{n - k} {{\Delta ^k}\left( {{\mathit{\boldsymbol{Q}}_i} - \lambda {\mathit{\boldsymbol{W}}_i}} \right)B_i^{n - k} \buildrel \Delta \over = \mathit{\boldsymbol{f}} - \mathit{\boldsymbol{\lambda g}}} } \end{array} $

$ \left\{ \begin{array}{l} \mathit{\boldsymbol{f}} = \frac{{n!}}{{\left( {n - k} \right)!}}\sum\limits_{i = 0}^{n - k} {{\Delta ^k}{\mathit{\boldsymbol{Q}}_i}B_i^{n - k}} \\ \mathit{\boldsymbol{g}} = \frac{{n!}}{{\left( {n - k} \right)!}}\sum\limits_{i = 0}^{n - k} {{\Delta ^k}{\mathit{\boldsymbol{W}}_i}B_i^{n - k}} \end{array} \right. $ (19)

因此

$ {\mathit{\boldsymbol{p}}^{\left( k \right)}}\left( t \right) \cdot {\mathit{\boldsymbol{p}}^{\left( k \right)}}\left( t \right) = \mathit{\boldsymbol{f}} \cdot \mathit{\boldsymbol{f}} - 2\lambda \mathit{\boldsymbol{f}} \cdot \mathit{\boldsymbol{g}} + {\lambda ^2}\mathit{\boldsymbol{g}} \cdot \mathit{\boldsymbol{g}} $

则曲线能量为关于形状参数$\lambda $的函数,即

$ {E_k}\left( \lambda \right) = \int_0^1 {\mathit{\boldsymbol{f}} \cdot \mathit{\boldsymbol{f}}{\rm{d}}t} - 2\lambda \int_0^1 {\mathit{\boldsymbol{f}} \cdot \mathit{\boldsymbol{g}}{\rm{d}}t} + {\lambda ^2}\int_0^1 {\mathit{\boldsymbol{g}} \cdot \mathit{\boldsymbol{g}}{\rm{d}}t} $

$ \frac{{{\rm{d}}{E_k}\left( \lambda \right)}}{{{\rm{d}}\lambda }} = - 2\int_0^1 {\mathit{\boldsymbol{f}} \cdot \mathit{\boldsymbol{g}}{\rm{d}}t} + 2\lambda \int_0^1 {\mathit{\boldsymbol{g}} \cdot \mathit{\boldsymbol{g}}{\rm{d}}t} = 0 $

$ \lambda = \frac{{\int_0^1 {\mathit{\boldsymbol{f}} \cdot \mathit{\boldsymbol{g}}{\rm{d}}t} }}{{\int_0^1 {\mathit{\boldsymbol{g}} \cdot \mathit{\boldsymbol{g}}{\rm{d}}t} }} $ (20)

式中,$\mathit{\boldsymbol{f}}$$\mathit{\boldsymbol{g}}$由式(19)定义。

为了方便使用,分别给出当$k$=1, 2, 3时,取$n$=3, 4, 5所得式(20)的具体表达式。

统一记

$ \mathit{\boldsymbol{D}}_n^{\rm{T}} = \left( {{\mathit{\boldsymbol{P}}_0},{\mathit{\boldsymbol{P}}_1}, \cdots ,{\mathit{\boldsymbol{P}}_n}} \right) $

式中,$n$=3, 4, 5。

$k$=1时,取$n$=3,式(20)即为

$ \lambda = - \frac{1}{2}\frac{{\mathit{\boldsymbol{D}}_3^{\rm{T}}\mathit{\boldsymbol{X}}_3^{\rm{1}}{\mathit{\boldsymbol{D}}_3}}}{{\mathit{\boldsymbol{D}}_3^{\rm{T}}\mathit{\boldsymbol{Y}}_3^{\rm{1}}{\mathit{\boldsymbol{D}}_3}}} $

$ \mathit{\boldsymbol{X}}_3^{\rm{1}} = \left( {\begin{array}{*{20}{c}} 5&{ - 13}&{ - 7}&{10}\\ 0&8&4&{ - 7}\\ 0&0&8&{ - 13}\\ 0&0&0&5 \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_3^{\rm{1}} = \left( {\begin{array}{*{20}{c}} 2&{ - 4}&{ - 1}&1\\ 0&2&1&{ - 1}\\ 0&0&2&{ - 4}\\ 0&0&0&2 \end{array}} \right) $

$k$=1时,取$n$=4,式(20)即为

$ \lambda = - \frac{{\mathit{\boldsymbol{D}}_4^{\rm{T}}\mathit{\boldsymbol{X}}_4^{\rm{1}}{\mathit{\boldsymbol{D}}_4}}}{{\mathit{\boldsymbol{D}}_4^{\rm{T}}\mathit{\boldsymbol{Y}}_4^{\rm{1}}{\mathit{\boldsymbol{D}}_4}}} $

$ \mathit{\boldsymbol{X}}_4^{\rm{1}} = \left( {\begin{array}{*{20}{c}} {21}&{ - 39}&{ - 27}&3&{21}\\ 0&{22}&{11}&{ - 19}&3\\ 0&0&{16}&{11}&{ - 27}\\ 0&0&0&{22}&{ - 39}\\ 0&0&0&0&{21} \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_4^{\rm{1}} = \left( {\begin{array}{*{20}{c}} 9&{ - 15}&{ - 6}&6&{ - 3}\\ 0&8&{ - 2}&{ - 5}&6\\ 0&0&8&{ - 2}&{ - 6}\\ 0&0&0&8&{ - 15}\\ 0&0&0&0&9 \end{array}} \right) $

$k$=1时,取$n$=5,式(20)即为

$ \lambda = - \frac{1}{2}\frac{{\mathit{\boldsymbol{D}}_5^{\rm{T}}\mathit{\boldsymbol{X}}_5^{\rm{1}}{\mathit{\boldsymbol{D}}_5}}}{{\mathit{\boldsymbol{D}}_5^{\rm{T}}\mathit{\boldsymbol{Y}}_5^{\rm{1}}{\mathit{\boldsymbol{D}}_5}}} $

$ \mathit{\boldsymbol{X}}_5^{\rm{1}} = \left( {\begin{array}{*{20}{c}} {135}&{ - 215}&{ - 141}&{ - 27}&{59}&{54}\\ 0&{114}&{61}&{ - 85}&{ - 48}&{59}\\ 0&0&{72}&{48}&{ - 85}&{ - 27}\\ 0&0&0&{72}&{61}&{ - 141}\\ 0&0&0&0&{114}&{ - 215}\\ 0&0&0&0&0&{135} \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_5^{\rm{1}} = \left( {\begin{array}{*{20}{c}} {20}&{ - 30}&{ - 17}&{11}&3&{ - 7}\\ 0&{18}&{ - 3}&{ - 15}&9&3\\ 0&0&{14}&{ - 4}&{ - 15}&{11}\\ 0&0&0&{14}&{ - 3}&{ - 17}\\ 0&0&0&0&{18}&{ - 30}\\ 0&0&0&0&0&{20} \end{array}} \right) $

$k$=2时,取$n$=3,式(20)即为

$ \lambda = - \frac{1}{2}\frac{{\mathit{\boldsymbol{D}}_3^{\rm{T}}\mathit{\boldsymbol{X}}_3^{\rm{2}}{\mathit{\boldsymbol{D}}_3}}}{{\mathit{\boldsymbol{D}}_3^{\rm{T}}\mathit{\boldsymbol{Y}}_3^{\rm{2}}{\mathit{\boldsymbol{D}}_3}}} $

$ \mathit{\boldsymbol{X}}_3^{\rm{2}} = \left( {\begin{array}{*{20}{c}} 1&{ - 5}&1&2\\ 0&4&{ - 4}&1\\ 0&0&4&{ - 5}\\ 0&0&0&1 \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_3^{\rm{2}} = \left( {\begin{array}{*{20}{c}} 1&{ - 2}&1&{ - 1}\\ 0&1&{ - 1}&1\\ 0&0&1&{ - 2}\\ 0&0&0&1 \end{array}} \right) $

$k$=2时,取$n$=4,式(20)即为

$ \lambda = - \frac{1}{2}\frac{{\mathit{\boldsymbol{D}}_4^{\rm{T}}\mathit{\boldsymbol{X}}_4^{\rm{2}}{\mathit{\boldsymbol{D}}_4}}}{{\mathit{\boldsymbol{D}}_4^{\rm{T}}\mathit{\boldsymbol{Y}}_4^{\rm{2}}{\mathit{\boldsymbol{D}}_4}}} $

$ \mathit{\boldsymbol{X}}_4^{\rm{2}} = \left( {\begin{array}{*{20}{c}} {15}&{ - 49}&8&{11}&0\\ 0&{38}&{ - 24}&{ - 14}&{11}\\ 0&0&{16}&{ - 24}&8\\ 0&0&0&{38}&{ - 49}\\ 0&0&0&0&{15} \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_4^{\rm{2}} = \left( {\begin{array}{*{20}{c}} 6&{ - 14}&4&1&{ - 3}\\ 0&9&{ - 8}&3&1\\ 0&0&4&{ - 8}&4\\ 0&0&0&9&{ - 14}\\ 0&0&0&0&6 \end{array}} \right) $

$k$=2时,取$n$=5,式(20)即为

$ \lambda = - \frac{1}{2}\frac{{\mathit{\boldsymbol{D}}_5^{\rm{T}}\mathit{\boldsymbol{X}}_5^2{\mathit{\boldsymbol{D}}_5}}}{{\mathit{\boldsymbol{D}}_5^{\rm{T}}\mathit{\boldsymbol{Y}}_5^2{\mathit{\boldsymbol{D}}_5}}} $

$ \mathit{\boldsymbol{X}}_5^2 = \left( {\begin{array}{*{20}{c}} {196}&{ - 600}&{113}&{83}&{40}&{ - 28}\\ 0&{470}&{ - 275}&{ - 145}&{40}&{40}\\ 0&0&{116}&{ - 8}&{ - 145}&{83}\\ 0&0&0&{116}&{ - 275}&{113}\\ 0&0&0&0&{470}&{ - 600}\\ 0&0&0&0&0&{196} \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_5^2 = \left( {\begin{array}{*{20}{c}} {52}&{ - 130}&{31}&{11}&{ - 10}&{ - 6}\\ 0&{90}&{ - 65}&{ - 5}&{30}&{ - 10}\\ 0&0&{27}&{ - 26}&{ - 5}&{11}\\ 0&0&0&{27}&{ - 65}&{31}\\ 0&0&0&0&{90}&{ - 130}\\ 0&0&0&0&0&{52} \end{array}} \right) $

$k$=3时,取$n$=3,式(20)即为

$ \lambda = - 2\frac{{\mathit{\boldsymbol{D}}_3^{\rm{T}}\mathit{\boldsymbol{X}}_3^3{\mathit{\boldsymbol{D}}_3}}}{{\mathit{\boldsymbol{D}}_3^{\rm{T}}\mathit{\boldsymbol{Y}}_3^3{\mathit{\boldsymbol{D}}_3}}} $

$ \mathit{\boldsymbol{X}}_3^3 = \left( {\begin{array}{*{20}{c}} 0&{ - 1}&1&0\\ 0&1&{ - 2}&1\\ 0&0&1&{ - 1}\\ 0&0&0&0 \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_3^3 = \left( {\begin{array}{*{20}{c}} 1&{ - 2}&2&{ - 2}\\ 0&1&{ - 2}&2\\ 0&0&1&{ - 2}\\ 0&0&0&1 \end{array}} \right) $

$k$=3时,取$n$=4,式(20)即为

$ \lambda = - \frac{{\mathit{\boldsymbol{D}}_4^{\rm{T}}\mathit{\boldsymbol{X}}_4^3{\mathit{\boldsymbol{D}}_4}}}{{\mathit{\boldsymbol{D}}_4^{\rm{T}}\mathit{\boldsymbol{Y}}_4^3{\mathit{\boldsymbol{D}}_4}}} $

$ \mathit{\boldsymbol{X}}_4^3 = \left( {\begin{array}{*{20}{c}} 3&{ - 20}&{16}&4&{ - 6}\\ 0&{25}&{ - 48}&{14}&4\\ 0&0&{32}&{ - 48}&{16}\\ 0&0&0&{25}&{ - 20}\\ 0&0&0&0&3 \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_4^3 = \left( {\begin{array}{*{20}{c}} 7&{ - 22}&{16}&{ - 10}&2\\ 0&{19}&{ - 32}&{26}&{ - 10}\\ 0&0&{16}&{ - 32}&{16}\\ 0&0&0&{19}&{ - 22}\\ 0&0&0&0&7 \end{array}} \right) $

$k$=3时,取$n$=5,式(20)即为

$ \lambda = - \frac{1}{2}\frac{{\mathit{\boldsymbol{D}}_5^{\rm{T}}\mathit{\boldsymbol{X}}_5^3{\mathit{\boldsymbol{D}}_5}}}{{\mathit{\boldsymbol{D}}_5^{\rm{T}}\mathit{\boldsymbol{Y}}_5^3{\mathit{\boldsymbol{D}}_5}}} $

$ \mathit{\boldsymbol{X}}_5^3 = \left( {\begin{array}{*{20}{c}} 7&{ - 37}&{27}&1&{ - 3}&{ - 2}\\ 0&{44}&{ - 67}&7&{12}&{ - 3}\\ 0&0&{32}&{ - 32}&7&1\\ 0&0&0&{32}&{ - 67}&{27}\\ 0&0&0&0&{44}&{ - 37}\\ 0&0&0&0&0&7 \end{array}} \right) $

$ \mathit{\boldsymbol{Y}}_5^3 = \left( {\begin{array}{*{20}{c}} 4&{ - 14}&9&{ - 3}&{ - 1}&1\\ 0&{13}&{ - 19}&9&{ - 1}&{ - 1}\\ 0&0&9&{ - 14}&9&{ - 3}\\ 0&0&0&9&{ - 19}&9\\ 0&0&0&0&{13}&{ - 14}\\ 0&0&0&0&0&4 \end{array}} \right) $

4 数值实验

4.1 $\lambda $-Bézier曲线与Bézier曲线

为了直观比较以不同能量函数为优化目标所得$\lambda $-Bézier曲线之间的差异,以及与Bézier曲线之间的差异,下面给出由相同控制顶点定义的35次$\lambda $-Bézier曲线以及Bézier曲线,并给出相应的曲率图。

图 3(a) (b) (c)分别为以$E_1$$E_2$$E_3$为优化目标所得3次$\lambda $-Bézier曲线,图 3(d)为3次Bézier曲线。

图 3 3次$\lambda $-Bézier曲线与3次Bézier曲线
Fig. 3 The cubic $\lambda $-Bézier curves and the cubic Bézier curve
((a) energy $E_1$; (b) energy $E_2$; (c) energy $E_3$; (d) Bézier)

图 4(a)图 3(a)曲线的曲率图,第2幅子图为图 4(a)局部放大后的图形;余下3幅子图依次为图 3(b) (c) (d)中曲线的曲率图。

图 4 图 3中各曲线的曲率图
Fig. 4 Curvature plot of the curves in fig. 3
((a) corresponding to fig. 3(a); (b) local amplification of fig. 4(a); (c) corresponding to fig. 3(b); (d) corresponding to fig. 3(c); (e) corresponding to fig. 3(d))

图 5(a) (b)分别为以$E_1$$E_2$为优化目标所得4次$\lambda $-Bézier曲线,图 5(c) (d)分别为以$E_3$为优化目标所得4次$\lambda $-Bézier曲线以及4次Bézier曲线。

图 5 4次$\lambda $-Bézier曲线与4次Bézier曲线
Fig. 5 The quartic $\lambda $-Bézier curves and the quartic Bézier curve ((a) energy $E_1$; (b) energy $E_2$; (c) energy $E_3$; (d) Bézier)

图 6(a)图 5(a)曲线的曲率图,图 6(b)图 6(a)局部放大后的图形;图 6(c) (d) (e)依次为图 5(b) (c) (d)曲线的曲率图。

图 6 图 5中各曲线的曲率图
Fig. 6 Curvature plot of the curves in fig. 5 ((a) corresponding to fig. 5(a); (b) local amplification of fig. 6(a); (c) corresponding to fig. 5(b); (d) corresponding to fig. 5(c); (e) corresponding to fig. 5(d))

图 7(a) (b) (c)分别为以$E_1$$E_2$$E_3$为优化目标所得5次$\lambda $-Bézier曲线,图 7(d)为5次Bézier曲线。

图 7 5次$\lambda $-Bézier曲线与5次Bézier曲线
Fig. 7 The quintic $\lambda $-Bézier curves and the quintic Bézier curve ((a) energy $E_1$; (b) energy $E_2$; (c) energy $E_3$; (d) Bézier)

图 8(a)图 7(a)中曲线的曲率图,图 8(b)图 8(a)局部放大后的图形;图 8(c) (d) (e)依次为图 7(b) (c) (d)中曲线的曲率图。

图 8 图 7中各曲线的曲率图
Fig. 8 Curvature plot of the curves in fig. 7
((a) corresponding to fig. 7(a); (b) local amplification of fig. 8(a); (c) corresponding to fig. 7(b); (d) corresponding to fig. 7(c); (e) corresponding to fig. 7(d))

分别比较图 3图 5图 7中的4幅子图,基本可以得出相同的规律和特征。取拉伸能量近似最小为目标得到的曲线“棱角分明”,各条曲线段接近拉直状,在分段连接点处容易形成“尖角”,曲线的次数越低,这种特征越明显;从理论上讲,拉伸能量反映的是曲线长度,拉伸能量越小,曲线段越接近连接首末控制顶点的直线段,因此在分段连接点处过渡较不自然。取弯曲能量近似最小为目标得到的曲线总是具有良好的视觉效果;从理论上讲,弯曲能量反映的是曲线曲率,弯曲能量越小,曲线段越平缓,因此在分段连接点处过渡较为自然。取扭曲能量近似最小为目标得到的曲线总是与相应的Bézier曲线具有相似的外形。从对控制多边形的逼近能力这一角度来比较,整体上看,取拉伸能量近似最小为目标得到的曲线最弱,取扭曲能量近似最小为目标得到的曲线最强。这样一来,若将曲线段的首、末控制顶点分别看作山底和山顶,将曲线段看做从山底到山顶的路径,那么以拉伸能量近似最小为目标得到的路径最陡峭,以扭曲能量近似最小为目标得到的路径最平缓,以弯曲能量近似最小为目标得到的路径则介于前二者之间。

图 4图 6图 8可以看出,取拉伸能量近似最小为目标得到的曲线在某些点处具有非常大的曲率,整条曲线的曲率变化范围较大;将取弯曲能量近似最小和取扭曲能量近似最小为目标得到的曲线曲率图相比,有时候前者的变化范围较后者大(如图 4图 8),有时候前者的变化范围较后者小(如图 6);取扭曲能量近似最小为目标得到的曲线与相应的Bézier曲线具有形状相似的曲率图,有时候前者的曲率变化范围较后者小(如图 4),有时候两者的曲率变化范围相当(如图 6图 8)。

虽然扭曲能量反映的是曲线曲率的变化量,$E_3$为扭曲能量的近似,但从上面的分析可以看出,以$E_3$为优化目标所得曲线的曲率变化量并不总是比以$E_2$为优化目标所得曲线的曲率变化量小,导致该结果的主要原因是$E_k$为能量的近似值而非精确值。

4.2 $\lambda $-Bézier曲线与文献中曲线

本文通过构造含参数的调配函数来定义形状可调的Bézier曲线,很多文献都采用类似的方法给出了调配函数各异的形状可调Bézier曲线模型。相比较而言,本文所给模型的优点主要体现在两个方面:1)所有调配函数都有统一的显示表达式,2)曲线中形状参数的选取有章可循。当有明确的设计要求时,选择本文模型,可以依据相应的计算公式快速确定满足要求的形状参数。而对于文献中那些没有提供形状参数配套计算公式的模型,一般情况下,不管控制顶点如何变化,通常都是在形状参数允许的范围内取一些比较特殊的值来进行曲线设计,这种方式往往不易保证所得曲线满足设计要求。下面以文献[30]中所给曲线模型为例,与本文方法进行比较。

给定控制顶点(0, 6)、(0, 2)、(5, 2)、(7, 0)、(2, 0)、(6, 8),可以确定一段5次$\lambda $-Bézier曲线,也可以确定文献[30]中一段相应曲线。若要求曲线段弯曲能量近似最小,使用式(20)计算出5次$\lambda $-Bézier曲线中参数$\lambda = - \frac{{690}}{{319}}$,所得结果见图 9中黑色实曲线。选择文献[30]中的模型,在形状参数的取值范围[-5, 1]内,依次取参数$\lambda $为-5、-4、-3、-2、-1、0、1,所得结果分别见图 9中红色、绿色、蓝色、青绿色、洋红色、黄色、黑色虚曲线。从图 9中可以判断出,无论形状参数在允许的范围内取何值,都无法用文献[30]中的模型得到与本文所得弯曲能量近似最小比较贴近的结果。

图 9 $\lambda $-Bézier曲线与文献[30]中曲线
Fig. 9 $\lambda $-Bézier curve and the curves in reference[30]

5 结论

形状可调Bézier曲线的设计是CAGD中的一个重要问题,目前已有很多文献研究含形状参数的Bézier曲线。与现有文献相比,本文优点在于赋予曲线形状调整能力的同时并未提升基函数的次数,并且给出了所有基函数统一的显式表示,这给基函数以及由之定义的曲线的计算带来了方便。另外,虽然在基函数中引入参数可以赋予曲线独立于控制顶点的形状调整自由度,但同时也给设计人员增加了选择形状参数的工作量,现有以形状可调Bézier曲线为研究主题的文献很少给出形状参数取值的建议,本文则弥补这一不足,给出了使曲线拉伸能量、弯曲能量、扭曲能量近似最小时,形状参数的计算公式,为曲线的应用提供了方便。

参考文献

  • [1] Wang R H, Li C J, Zhu C G. Computational Geometry Tutorial[M]. Beijing: Science Press, 2008. [ 王仁宏, 李崇君, 朱春钢. 计算几何教程[M]. 北京: 科学出版社, 2008.]
  • [2] Wang W T, Wang G Z. Bézier curves with shape parameter[J]. Journal of Zhejiang University Science-Science A, 2005, 6(6): 497–501. [DOI:10.1631/jzus.2005.A0497]
  • [3] Yan L L, Song L Z. Bézier curves with two shape parameters[J]. Journal of Engineering Graphics, 2008, 29(3): 88–92. [严兰兰, 宋来忠. 带两个形状参数的Bézier曲线[J]. 工程图学学报, 2008, 29(3): 88–92. ] [DOI:10.3969/j.issn.1003-0158.2008.03.017]
  • [4] Yang L Q, Zeng X M. Bézier curves and surfaces with shape parameters[J]. International Journal of Computer Mathematics, 2009, 86(7): 1253–1263. [DOI:10.1080/00207160701821715]
  • [5] Hang H J, Yu J, Li W G. Two parameters extension of cubic Bézier curve and its applications[J]. Computer Engineering and Applications, 2010, 46(31): 178–180, 205. [杭后俊, 余静, 李汪根. 三次Bézier曲线的一种双参数扩展及应用[J]. 计算机工程与应用, 2010, 46(31): 178–180, 205. ] [DOI:10.3778/j.issn.1002-8331.2010.31.049]
  • [6] Yan L L, Liang J F. An extension of the Bézier model[J]. Applied Mathematics and Computation, 2011, 218(6): 2863–2879. [DOI:10.1016/j.amc.2011.08.030]
  • [7] Qin X Q, Hu G, Zhang N J, et al. A novel extension to the polynomial basis functions describing Bezier curves and surfaces of degree n with multiple shape parameters[J]. Applied Mathematics and Computation, 2013, 223: 1–16. [DOI:10.1016/j.amc.2013.07.073]
  • [8] Yan L L, Wu G G. An new extension of Bézier method[J]. Journal of Hefei University of Technology, 2013, 36(5): 625–631. [严兰兰, 邬国根. Bézier方法的新扩展[J]. 合肥工业大学学报:自然科学版, 2013, 36(5): 625–631. ] [DOI:10.3969/j.issn.1003-5060.2013.05.025]
  • [9] Hui H Y, Zhang G C. Similar Bézier curves with two shape parameters[J]. Computer Science, 2014, 41(11A): 100–102, 122. [葸海英, 张贵仓. 带两个参数的拟Bézier曲线[J]. 计算机科学, 2014, 41(11A): 100–102, 122. ]
  • [10] Shi L H, Zhang G C. New extension of cubic TC-Bézier curves[J]. Computer Engineering and Applications, 2011, 47(4): 201–204. [师利红, 张贵仓. 三次TC-Bézier曲线的新扩展[J]. 计算机工程与应用, 2011, 47(4): 201–204. ] [DOI:10.3778/j.issn.1002-8331.2011.04.056]
  • [11] Dube M, Mishra U. Tension quasi-quintic trigonometric Bézier curve with two shape parameters[J]. International Journal of Recent Scientific Research, 2016, 7(8): 12866–12870.
  • [12] Wu B B, Yin J F, Jin M, et al. Rational quadratic trigonometric Bézier curve based on new basis with exponential functions[J]. Journal of Shanghai Normal University:Natural Sciences, 2017, 46(3): 410–416. [吴蓓蓓, 殷俊锋, 金猛, 等. 基于新指数基函数的有理二次三角Bézier曲线[J]. 上海师范大学学报:自然科学版, 2017, 46(3): 410–416. ] [DOI:10.3969/J.ISSN.100-5137.2017.03.009]
  • [13] Chen S G, Huang Y D. Hyperbolic Bézier curves with multiple shape parameters[J]. Journal of Engineering Graphics, 2009, 30(1): 75–79. [陈素根, 黄有度. 带多形状参数的双曲Bézier曲线[J]. 工程图学学报, 2009, 30(1): 75–79. ] [DOI:10.3969/j.issn.1003-0158.2009.01.014]
  • [14] Zhang J X, Tan J Q. Extensions of hyperbolic Bézier curves[J]. Journal of Engineering Graphics, 2011, 32(1): 31–38. [张锦秀, 檀结庆. 代数双曲Bézier曲线的扩展[J]. 工程图学学报, 2011, 32(1): 31–38. ] [DOI:10.3969/j.issn.1003-0158.2011.01.007]
  • [15] Yan L L, Han X L, Zhou Q H. Quadratic hyperbolic Bézier curve and surface[J]. Computer Engineering and Science, 2015, 37(1): 162–167. [严兰兰, 韩旭里, 周其华. 二次双曲Bézier曲线曲面[J]. 计算机工程与科学, 2015, 37(1): 162–167. ] [DOI:10.3969/j.issn.1007-130X.2015.01.025]
  • [16] Xu G, Wang G Z, Chen W Y. Geometric construction of energy-minimizing Béezier curves[J]. Science China Information Sciences, 2011, 54(7): 1395–1406. [DOI:10.1007/s11432-011-4294-8]
  • [17] Zhang C M, Zhang P F, Cheng F H. Fairing spline curves and surfaces by minimizing energy[J]. Computer-Aided Design, 2001, 33(13): 913–923. [DOI:10.1016/S0010-4485(00)00114-7]
  • [18] Long X P. Fairing of curves and surfaces by local energy optimization[J]. Journal of Computer-Aided Design & Computer Graphics, 2002, 14(12): 1109–1113. [龙小平. 局部能量最优法与曲线曲面的光顺[J]. 计算机辅助设计与图形学学报, 2002, 14(12): 1109–1113. ] [DOI:10.3321/j.issn:1003-9775.2002.12.002]
  • [19] Wang Y J, Cao Y. Energy optimization fairing algorithm of non-uniform cubic parametric splines[J]. Journal of Computer-Aided Design & Computer Graphics, 2005, 17(9): 1969–1975. [王远军, 曹沅. 非均匀三次参数样条曲线的能量最优光顺算法[J]. 计算机辅助设计与图形学学报, 2005, 17(9): 1969–1975. ] [DOI:10.3321/j.issn:1003-9775.2005.09.013]
  • [20] Sun Y H. Quintic G2 interpolating fair curves via curvature variation minmization[D]. Hangzhou: Zhejiang Gongshang University, 2015. [孙义环. 曲率变化最小的五次G2插值光顺曲线[D]. 杭州: 浙江工商大学, 2015.] http://cdmd.cnki.com.cn/Article/CDMD-10353-1016031384.htm
  • [21] Wallner J. Existence of set-interpolating and energy-minimizing curves[J]. Computer Aided Geometric Design, 2004, 21(9): 883–892. [DOI:10.1016/j.cagd.2004.07.010]
  • [22] Yong J H, Cheng F H. Geometric hermite curves with minimum strain energy[J]. Computer Aided Geometric Design, 2004, 21(3): 281–301. [DOI:10.1016/j.cagd.2003.08.003]
  • [23] Zhang A, Zhang C. Shape interpolating geometric hermite curves with minimum strain energy[J]. Journal of Information and Computational Science, 2006, 3(4): 1025–1033.
  • [24] Veltkamp R C, Wieger W. Modeling 3D curves of minimal energy[J]. Computer Graphics Forum, 2010, 14(3): 97–110. [DOI:10.1111/j.1467-8659.1995.cgf143_0097.x]
  • [25] Jaklič G, Žagara E. Planar cubic G1 interpolatory splines with small strain energy[J]. Journal of Computational and Applied Mathematics, 2011, 235(8): 2758–2765. [DOI:10.1016/j.cam.2010.11.025]
  • [26] Ling C C, Abbas M, Ali J M. Minimum energy curve in polynomial interpolation[J]. Matematika (Johor Bahru), 2011, 27(2): 159–167.
  • [27] Adriaenssens S, Malek S, Miki M, et al. Generating smooth curves in 3 dimensions by minimizing higher order strain energy measures[J]. International Journal of Space Structures, 2013, 28(3-4): 119–126. [DOI:10.1260/0266-3511.28.3-4.119]
  • [28] Li X M, Zhang Y X, Ma L, et al. Discussion on relationship between minimal energy and curve shapes[J]. Applied Mathematics-A Journal of Chinese Universities, 2014, 29(4): 379–390. [DOI:10.1007/s11766-014-3230-2]
  • [29] Yan L L, Han X L. Improvement of the modifiable Bézier curves[J]. Journal of Image and Graphics, 2014, 19(9): 1368–1376. [严兰兰, 韩旭里. 对可调控Bézier曲线的改进[J]. 中国图象图形学报, 2014, 19(9): 1368–1376. ] [DOI:10.11834/jig.20140914]
  • [30] Wu X Q. Bézier curve with shape parameter[J]. Journal of Image and Graphics, 2006, 11(2): 269–274. [吴晓勤. 带形状参数的Bézier曲线[J]. 中国图象图形学报, 2006, 11(2): 269–274. ] [DOI:10.3969/j.issn.1006-8961.2006.02.019]