Print

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




    GDC 2017会议专栏    




  <<上一篇 




  下一篇>> 





沿整体C-Bézier曲线的运动
expand article info 沈莞蔷1, 李玲玉1, 汪国昭2,3
1. 江南大学理学院, 无锡 214122;
2. 浙江大学数学系, 杭州 310027;
3. 浙江大学CAD & CG国家重点实验室, 杭州 310058

摘要

目的 整体曲线包括传统有限闭区间(比如[0, $α$ ])上的内部段和该区间外的延拓段。在计算机辅助设计(CAD)中,构造整体曲线常用分段表示,存在冗余数据——为了减少冗余,需知道各分段间的关系,并判断它们是否在同一整体曲线上。由此,本文研究当整体C-Bézier曲线原参数域[0, $α$ ]在(-∞,+∞)上缩放变动时,曲线的控制顶点的变化情况。方法 通过基函数的递推比较,寻找运动前后控制顶点之间的关系。首先考虑特殊细分情下线性插值。因插值后生成的NUAT-B样条基分段且具有支撑区间,它无法适应整体情况。因此用其与t轴间的区域面积取代它;接着进一步讨论了一般情况下沿整体C-Bézier运动的线性插值。由于C-Bézier参数区间长度要小于 ${\rm{ \mathsf{ π} }}$ ,特殊细分情况下线性插值不能直接推广。不过虽然参数区间在变化,整体曲线上每点位置却不变。针对这点,使用两次递归,寻求得到以线性插值形式沿整体C-Bézier曲线运动的结果。结果 只要保持参数区间的长度在(0, ${\rm{ \mathsf{ π} }}$ )上,运动的曲线都可以写成传统的C-Bézier内部段的形式,且控制顶点可以表示为原始控制顶点直接的线性组合,或者逐步地线性插值(包括内插和外插)的形式。结论 考虑整体曲线及沿整体曲线的运动,可以改变C-Bézier曲线的造型区间,减少造型过程中的冗余数据。不过,C-Bézier基由递归积分定义,其运动过程较慢。所以今后可以考虑加速运动的方法,也可以考虑其他类型的拟-Bézier曲线。

关键词

几何造型; C-Bézier曲线; 控制顶点; 参数区间; 线性插值

Movement along an integral C-Bézier curve
expand article info Shen Wanqiang1, Li Lingyu1, Wang Guozhao2,3
1. School of Science, Jiangnan University, Wuxi 214122, China;
2. Department of Mathematics, Zhejiang University, Hangzhou 310027, China;
3. State Key Laboratory of CAD & CG, Zhejiang University, Hangzhou 310058, China
Supported by: National Natural Science Foundation of China (61402201, 61772013, 61272300, 11371174)

Abstract

Objective The parameter of a conventional C-Bézier curve is often limited in a closed interval. In this study, we focus on an integral one made up of the traditional inner segment in a finite closed interval (such as[0, $α$ ]) and a part out of the interval. However, in computer-aided design, the modeling of an integral curve is often expressed as different stages and results in redundant data. In fact, when modeling an entire curve, the control points of different segments may have relations with one another. Therefore, if the control points of one segment and some shape parameters are stored, then the entire curve may be obtained, and the curve data may be decreased. We need to determine the relations among different segments and judge whether they are on the same integral curve to decrease the final redundancy. We raise two questions:1) Given an inner curve, can any segment of its integral curve be presented as an inner form? and 2) Are two neighboring inner C-Bézier curves on the same integral curve? We select a C-Bézier curve for our research. The focus of this study is to consider the changes in control vertices for the C-Bézier curve when the original parametric region[0, $α$ ] is scaled on (-∞, +∞). Method Any C-Bézier curve is divided into two arcs from geometric point of view:a center Bézier curve and a trigonometric part. On the basis of their movements, any segment of an integral C-Bézier curve can be represented as an inner form. We can analyze relations of control vertices from algebra perspective and give three forms (direct, subdivision, and linear interpolation forms) between newly produced control points in the movement and old ones. First, we represent certain segments of the integral C-Bézier curve as an inner form, consider basis functions recursively, and compare them to obtain the direct form of original control points. Second, one endpoint of the moving segment is considered, which relates to a subdivision scheme. The scheme subdivides the inner curve into two neighboring C-Bézier segments. Similar to the direct form, expressions can be easily worked out by using recursive evaluation. Third, we consider a corner-cutting form under special subdivision situation to identify linear interpolation from easy to difficult. The corner cutting is an alternative of the direct form, and the corner-cutting form can be obtained by the knot-inserting process. However, the NUAT-B-spline generated after interpolation cannot adapt to the integral case because it is piecewise and is zero out of the interval. We use the area between a corner-cutting scheme and t-axis to extend the scheme. Subdivision with a corner-cutting form is obtained on the basis of recursion and the relations between a basis and the subdivision scheme. The linear interpolation form is considered to move along an integral C-Bézier curve for general case. The length of the parameter interval of an inner C-Bézier curve needs to be less than π; thus, the corner-cutting form under special subdivision situation cannot be directly extended. Although the parameter interval of the C-Bézier curve changes, the position of each point on the integral curve never changes. We utilize an evaluation scheme to solve the extension problem. Consistent with Bézier curve, results of the movement along an integral C-Bézier curve with a linear interpolation form are obtained by using recursive evaluation twice. Finally, we establish an algorithm to judge if two given inner C-Bézier curves are on the same integral curve by considering that integral curve can be used to reduce redundant data. The error of the C-Bézier curve can be limited by the error of its control points; hence, we use an error item to control the judgment accuracy after calculating control points by direct form. Result This study focuses on C-Bézier curves and regards the traditional inner part and the extended part out of an interval as integrals. An inner C-Bézier curve can be moved along the integral curve while its parameter integral length is less than ${\rm{ \mathsf{ π} }}$ , and motion curves can be represented as an inner C-Bézier form when its parameter interval length is in (0, ${\rm{ \mathsf{ π} }}$ ). New control points can be obtained by a direct linear combination or stepwise linear interpolation (including traditional interpolation and extrapolation) form of the old ones. A subdivision scheme, including direct and corner-cutting forms, of the inner C-Bézier curve is included as a subcase. The integral curve and the movement along it may be considered to reduce redundant storage data. Conclusion The applications are as follows:First, the movement along an integral C-Bézier can be used to scale the parameter interval of a given C-Bézier curve. Second, integral curve can be considered to reduce redundancy by focusing on the part and extending the parameter interval. Third, two neighboring C-Bézier curves are judged on whether they are on the same integral curve under permissible error. If they are on the same curve, then data of one curve may be reduced while storing, whereas data of the other one can be saved. However, the movement process is slow because of the recursive integral definition of the C-Bézier basis. In the future, we may consider the acceleration of the movement method or other types of Bézier-like curves.

Key words

geometric modeling; C-Bézier curve; control vertices; parameter interval; linear interpolation

0 引言

在计算机辅助设计中,构造整体曲线曲面时常会产生冗余数据。如图 1所示,使用有理二次Bézier模型[1]画圆时,至少需要6个控制顶点。而在数学中,不共线的3点就可以确定一个圆,可见该造型中存在冗余数据。

图 1 冗余数据的例子
Fig. 1 Example for redundant data

事实上,在构造整条曲线过程中,不同段的控制顶点之间可能存在某种联系。因此,如果知道某段的控制顶点和一些形状参数,就能得到整条曲线而且可以减少冗余数据,所以要研究整体曲线。

整体曲线包括两个部分:传统有限闭区间上的曲线段(在本文称之为内部段)及该区间外的延拓段。例如Bézier曲线,区间[0, 1]上是内部段,区间之外是延拓段。要想减少整体曲线的冗余数据,就需要知道这两部分间的关系,并要判断它们是否在同一曲线上。据此,提出以下问题:

1) 给定曲线的内部段,当其参数区间在$ {\boldsymbol{\rm{R}}} $上运动时,控制顶点的变动情况。

2) 判定两条相邻C-Bézier曲线是否在同一整体曲线上。

对上述问题,在文献[1]中,采用开花算法将任意区间[$a$, $b$]上的Bézier曲线定义到[0, 1]上后,重新计算了控制顶点。在这里,选择对空间$ {\mathit{\Gamma }_n} = {\rm{span}}\left\{ {1, t, \cdots {t^n}, \sin \left( t \right), \cos \left( t \right)} \right\} $上的C-Bézier曲线进行研究。原因如下:

1) C-Bézier曲线具有良好的几何性质,它可以扩展为整体曲线[2-3]

2) C-Bézier曲线可以塑造一些不含有理形式的经典曲线,其参数区间不会由于分母的零点导致无法延伸。

C-Bézier曲线始于$n$ = 1[4],并扩展到任意的 $n$[5]。它具有许多类似Bézier的性质,包括唯一的规范化B基[6]、具有最优保形性[7],它还可以用来替代有理Bézier模型[8]。此外,其基函数的定义方法可以扩展到一般的拟Bézier模型[9],如AH-Bézier[10]、AHT-Bézier[11]$ \omega $-Bézier[12]。因此C-Bézier曲线被广泛应用于几何造型中[13-20]

对于C-Bézier曲线,本文将会对上述两个问题进行解答。若其参数区间在(0, ${\rm{ \mathsf{ π} }}$)内,则可将整体C-Bézier曲线的任一分段表示为内部形式。其新的控制顶点可由旧控制顶点的线性组合或线性内插(外插)表示。通过这些控制顶点,便可判断出两个内部C-Bézier曲线是否在同一整体曲线上。

1 整体C-Bézier曲线

整体C-Bézier曲线定义类似于内部曲线的定义[21],唯一的区别是参数不再局限于区间[0, $\alpha$]内。

$ \mathit{\boldsymbol{P}}\left( t \right) = \sum\limits_{i = 0}^{n + 2} {C_i^{n + 2}\left( {t;\alpha } \right){\mathit{\boldsymbol{P}}_i}} $ (1)

式中,$ \alpha \in \left( {0, {\rm{ \mathsf{ π} }}} \right) $是给定的形状参数,$ t \in \left( { - \infty, \infty } \right), {\mathit{\boldsymbol{P}}_i}, i = 0, 1, \cdots, n + 2 $是控制顶点,$ C_i^{n + 2}\left( {t;\alpha } \right), i = 0, 1, \cdots, n + 2 $是由下列公式递归生成的C-Bézier基函数

$ \left\{ \begin{array}{l} C_0^{n + 2}\left( {t;\alpha } \right) = 1 - \frac{{\int_0^t {C_0^{n + 1}\left( {s;\alpha } \right){\rm{d}}s} }}{{\delta _{0,\alpha }^{n + 1}}}\\ C_i^{n + 2}\left( {t;\alpha } \right) = \frac{{\int_0^t {C_{i - 1}^{n + 1}\left( {s;\alpha } \right){\rm{d}}s} }}{{\delta _{i - 1,\alpha }^{n + 1}}} - \\ \frac{{\int_0^t {C_i^{n + 1}\left( {s;\alpha } \right){\rm{d}}s} }}{{\delta _{i,\alpha }^{n + 1}}};\;\;\;\;1 \le i \le n + 1\\ C_{n + 2}^{n + 2}\left( {t;\alpha } \right) = \frac{{\int_0^t {C_{i + 1}^{n + 1}\left( {s;\alpha } \right){\rm{d}}s} }}{{\delta _{n + 1,\alpha }^{n + 1}}} \end{array} \right. $ (2)

$ \delta _{i,\alpha }^{n + 1} = \int_0^\alpha {C_i^{n + 1}\left( {s;\alpha } \right){\rm{d}}s} ;\;\;\;\;0 \le i \le n + 2 $ (3)

上述基函数可由以下线性p-Bézier基递推得到[22],即

$ \left\{ \begin{array}{l} C_0^2\left( {t;\alpha } \right) = \frac{{{{\sin }^2}\left( {\frac{{\alpha - t}}{2}} \right)}}{{{{\sin }^2}\left( {\frac{\alpha }{2}} \right)}}\\ C_1^2\left( {t;\alpha } \right) = \frac{{2cos\left( {\frac{\alpha }{2}} \right)\sin \left( {\frac{{\alpha - t}}{2}} \right)\sin \left( {\frac{t}{2}} \right)}}{{{{\sin }^2}\left( {\frac{\alpha }{2}} \right)}}\\ C_2^2\left( {t;\alpha } \right) = \frac{{{{\sin }^2}\left( {\frac{t}{2}} \right)}}{{{{\sin }^2}\left( {\frac{\alpha }{2}} \right)}} \end{array} \right. $ (4)

图 2为(-∞, ∞)上的整体C-Bézier曲线造型的一个例子。图 2(a)为基函数,虚线框内是传统的C-Bézier基;图 2(b)是相应的曲线,黑色较细的是整体曲线,蓝色较粗的是内部曲线,其控制顶点由蓝色圆圈表示。从图 2中可以看出,整体曲线是内部曲线的自然延拓。

图 2 $ \left( { - \infty, \infty } \right) $上的整体C-Bézier造型
Fig. 2 Example for integral C-Bézier model
((a) basis functions; (b) corresponding curve)

2 沿整体C-Bézier曲线的运动

给定一[0, $ \alpha $]上的C-Bézier曲线,当其参数区间在$ {\boldsymbol{\rm{R}}} $上运动,考虑控制顶点的运动情况。

为了保持传统C-Bézier内部段正性,区间长度$ \mu $要小于$ {\rm{ \mathsf{ π} }} $,假设$ \mu \in \left( {0, {\rm{ \mathsf{ π} }}} \right) $。从几何角度讲,C-Bézier分为两个弧段:中心Bézier曲线和绕椭圆轨道旋转轨迹,两者均可运动[3],故可表为内部形式。从代数意义上看,整体C-Bézier曲线式(1)在任意参数区间$ \left[{\lambda, \lambda + \mu } \right] $上的段可表为内部形式

$ \begin{array}{*{20}{c}} {{\mathit{\boldsymbol{V}}_n}\left( t \right) = \sum\limits_{i = 0}^{n + 2} {C_i^{n + 2}\left( {t - \lambda ;\mu } \right){\mathit{\boldsymbol{V}}_i}} }\\ {t \in \left[ {\lambda ,\lambda + \mu } \right]} \end{array} $ (5)

对于控制顶点$ \left\{ {{\mathit{\boldsymbol{V}}_i}} \right\} $,下面分别给出它关于原始给定控制顶点$ {\mathit{\boldsymbol{P}}_i} $, $i$ =0, 1, …, $n$+2的直接形式、细分形式和线性插值形式。

2.1 直接形式

首先考虑基函数的递归公式。

引理 1 假设 $i$ $j$ 不在[0, $n$+2]区间中,有$ d_{j, i}^{n + 2} $。当$n$≥1时,有

$ C_i^{n + 2}\left( {t;\alpha } \right) = \sum\limits_{j = 0}^{n + 2} {d_{j,i}^{n + 2}C_j^{n + 2}\left( {t - \lambda ;\mu } \right)} $ (6)

$ d_{j,i}^{n + 2} = d_{j - 1,i}^{n + 2} + \frac{{\delta _{j - 1,\mu }^{n + 1}}}{{\delta _{i - 1,\alpha }^{n + 1}}}d_{j - 1,i - 1}^{n + 1} - \frac{{\delta _{j - 1,\mu }^{n + 1}}}{{\delta _{i,\alpha }^{n + 1}}}d_{j - 1,i}^{n + 1} $ (7)

$ \begin{array}{l} d_{0,i}^{n + 2} = \sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i - 1}^{n + 1}}}{{\delta _{i - 1,\alpha }^{n + 1}}}\int_{ - \lambda }^0 {C_j^{n + 1}\left( {t;\mu } \right){\rm{d}}t} } - \\ \;\;\;\;\;\;\;\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i}^{n + 1}}}{{\delta _{i,\alpha }^{n + 1}}}\int_{ - \lambda }^0 {C_j^{n + 1}\left( {t;\mu } \right){\rm{d}}t} } \end{array} $ (8)

$ \left( {\mathit{\boldsymbol{d}}_{j,i}^2} \right) = \left( {\begin{array}{*{20}{c}} {C_0^2\left( {\lambda ;\alpha } \right)}&{C_1^2\left( {\lambda ;\alpha } \right)}&{C_2^2\left( {\lambda ;\alpha } \right)}\\ {{f_1}}&{1 - {f_1} - {f_2}}&{{f_2}}\\ {C_0^2\left( {\beta ;\alpha } \right)}&{C_1^2\left( {\beta ;\alpha } \right)}&{C_2^2\left( {\beta ;\alpha } \right)} \end{array}} \right) $ (9)

$ {f_1} = \frac{{\sin \left( {\frac{{\alpha - \lambda }}{2}} \right)\sin \left( {\frac{{\alpha - \beta }}{2}} \right)}}{{{{\sin }^2}\left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{\mu }{2}} \right)}} $

$ {f_2} = \frac{{\sin \left( {\frac{\beta }{2}} \right)\sin \left( {\frac{\lambda }{2}} \right)}}{{{{\sin }^2}\left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{\mu }{2}} \right)}} $

$ \beta = \lambda + \mu $

证明。数学归纳法。当 $n$ =0时,由式(4)易得式(9)。假设对于 $n$-1该引理成立,那么对于 $n$ ,由初始p-Bézier基函数式(2)的定义,当1≤$i$$n$+1时

$ \begin{array}{*{20}{c}} {C_i^{n + 2}\left( {t;\alpha } \right) = \frac{{\int_0^t {C_{i - 1}^{n + 1}\left( {s;\alpha } \right){\rm{d}}s} }}{{\delta _{i - 1,\alpha }^{n + 1}}} - \frac{{\int_0^t {C_i^{n + 1}\left( {s;\alpha } \right){\rm{d}}s} }}{{\delta _{i,\alpha }^{n + 1}}} = }\\ {\int_0^t {\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i - 1}^{n + 1}}}{{\delta _{i - 1,\alpha }^{n + 1}}}C_j^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} } - }\\ {\int_0^t {\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i}^{n + 1}}}{{\delta _{i,\alpha }^{n + 1}}}C_j^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} } = }\\ {\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i - 1}^{n + 1}}}{{\delta _{i - 1,\alpha }^{n + 1}}}\int_{ - \lambda }^0 {C_j^{n + 1}\left( {t;\mu } \right){\rm{d}}t} } - }\\ {\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i}^{n + 1}}}{{\delta _{i,\alpha }^{n + 1}}}\int_{ - \lambda }^0 {C_j^{n + 1}\left( {t;\mu } \right){\rm{d}}t} } + }\\ {\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i - 1}^{n + 1}}}{{\delta _{i - 1,\alpha }^{n + 1}}}\int_\lambda ^t {C_j^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} } - }\\ {\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i}^{n + 1}}}{{\delta _{i,\alpha }^{n + 1}}}\int_\lambda ^t {C_j^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} } } \end{array} $

由式(2) (7) (8),有

$ \begin{array}{*{20}{c}} {C_i^{n + 2}\left( {t;\alpha } \right) = d_{0,i}^{n + 2} + \sum\limits_{j = 1}^{n + 2} {\frac{{d_{j,i}^{n + 2}}}{{\delta _{j - 1,\mu }^{n + 1}}}\int_\lambda ^t {C_{j - 1}^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} } - }\\ {\sum\limits_{j = 0}^{n + 1} {\frac{{d_{j,i}^{n + 2}}}{{\delta _{j,\mu }^{n + 1}}}\int_\lambda ^t {C_j^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} } = }\\ {d_{0,i}^{n + 2}\left( {1 - \frac{{\int_\lambda ^t {C_0^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} }}{{\delta _{0,\mu }^{n + 1}}}} \right) + }\\ {\sum\limits_{j = 1}^{n + 1} {d_{j,i}^{n + 2}\frac{{\int_\lambda ^t {C_{j - 1}^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} }}{{\delta _{j - 1,\mu }^{n + 1}}}} - }\\ {\sum\limits_{j = 1}^{n + 1} {d_{j,i}^{n + 2}\frac{{\int_\lambda ^t {C_j^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} }}{{\delta _{j,\mu }^{n + 1}}}} + }\\ {d_{n + 2,i}^{n + 2}\frac{{\int_\lambda ^t {C_{n + 1}^{n + 1}\left( {s - \lambda ;\mu } \right){\rm{d}}s} }}{{\delta _{n + 1,\mu }^{n + 1}}} = }\\ {d_{0,i}^{n + 2}C_0^{n + 2}\left( {t - \lambda ;\mu } \right) + \sum\limits_{j = 1}^{n + 1} {d_{j,i}^{n + 2}C_j^{n + 2}\left( {t - \lambda ;\mu } \right)} + }\\ {d_{n + 2,i}^{n + 2}C_{n + 2}^{n + 2}\left( {t - \lambda ;\mu } \right) = \sum\limits_{j = 1}^{n + 2} {d_{j,i}^{n + 2}C_j^{n + 2}\left( {t - \lambda ;\mu } \right)} } \end{array} $

对于 $i$ =0, $n$+2,由递归式(7)可得引理也成立。所以对任意 $n$ ,引理均成立。

在式(8)中$ d_{0, i}^{n + 2} $表示方法比较复杂。但是由于曲线式(5)的端点都只在整体曲线式(1)上,所以可简化$ d_{0, i}^{n + 2} $,即

$ d_{0,i}^{n + 2} = C_i^{n + 2}\left( {\lambda ;\alpha } \right) $ (10)

定理 1 以直接形式沿整体C-Bézier曲线的运动。假设$ \mu \in \left[{0, {\rm{ \mathsf{ π} }}} \right) $,则整体C-Bézier曲线(1)的任意参数为[$ \lambda, \lambda + \mu $]段可以表示为式(5)的C-Bézier形式

$ {\mathit{\boldsymbol{V}}_i} = \sum\limits_{j = 0}^{n + 2} {d_{i,j}^{n + 2}{\mathit{\boldsymbol{P}}_j}} $ (11)

式中,$ d_{i, j}^{n + 2} $由式(7) (9) (10)递归生成。

2.2 细分形式

在2.1节中,若 $λ$ =0, $λ$ + $μ$ ∈[0, $α$ ],或者 $λ$ ∈[0, $α$ ], $λ$ + $μ$ = $α$ ,则表示区间[0, $λ$ ]或[ $λ$ , $α$ ]区间上的曲线。它可以认为是原内部段的C-Bézier曲线,细分成两段相邻的子曲线的情况。

假设

$ \mathit{\boldsymbol{P}}\left( t \right) = \left\{ \begin{array}{l} \mathit{\boldsymbol{Q}}\left( t \right)\;\;\;\;t \in \left[ {0,\lambda } \right]\\ \mathit{\boldsymbol{R}}\left( t \right)\;\;\;\;t \in \left[ {\lambda ,\alpha } \right] \end{array} \right. $ (12)

$ \mathit{\boldsymbol{Q}}\left( t \right) = \sum\limits_{i = 0}^{n + 2} {C_i^{n + 2}\left( {t;\lambda } \right){\mathit{\boldsymbol{Q}}_i}} $ (13)

$ \mathit{\boldsymbol{R}}\left( t \right) = \sum\limits_{i = 0}^{n + 2} {C_i^{n + 2}\left( {t - \lambda ;\alpha - \lambda } \right){\mathit{\boldsymbol{R}}_i}} $ (14)

与定理2.1类似,有如下细分定理成立。

定理 2 C-Bézier细分。令 $λ$ ∈[0, $α$ ],[0, $α$ ]上的任意内部C-Bézier曲线式(1)可以在点$\mathit{\boldsymbol{P}}$( $λ$ )处分为两段C-Bézier曲线式(13) (14),其控制顶点分别为

$ {\mathit{\boldsymbol{Q}}_i} = \sum\limits_{j = 0}^i {a_{i,j}^{n + 2}{\mathit{\boldsymbol{P}}_j}} $ (15)

$ {\mathit{\boldsymbol{R}}_i} = \sum\limits_{j = i}^{n + 2} {b_{i,j}^{n + 2}{\mathit{\boldsymbol{P}}_j}} $ (16)

式中,系数$ a_{i, j}^{n + 2} $

$ a_{00}^{n + 2} = 1,\;\;\;\forall n $ (17)

$ a_{j,i}^{n + 2} = a_{j + 1,i}^{n + 2} + \frac{{\delta _{j - 1,\lambda }^{n + 1}}}{{\delta _{i - 1,\alpha }^{n + 1}}}a_{j - 1,i - 1}^{n + 1} - \frac{{\delta _{j - 1,\lambda }^{n + 1}}}{{\delta _{i,\alpha }^{n + 1}}}a_{j - 1,i}^{n + 1} $ (18)

且矩阵($\mathit{\boldsymbol{a}}_{j, i}^2$)是

$ \left( {\begin{array}{*{20}{c}} 1&0&0\\ {\frac{{\sin \left( {\frac{{\alpha - \lambda }}{2}} \right)}}{{\sin \left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{\lambda }{2}} \right)}}}&{\frac{{\cos \left( {\frac{\alpha }{2}} \right)\sin \left( {\frac{\lambda }{2}} \right)}}{{\sin \left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{\lambda }{2}} \right)}}}&0\\ {C_0^2\left( {\lambda ;\alpha } \right)}&{C_1^2\left( {\lambda ;\alpha } \right)}&{C_2^2\left( {\lambda ;\alpha } \right)} \end{array}} \right) $ (19)

$ b_{n + 2,n + 2}^{n + 2} = 1,\forall n $ (20)

$ b_{j,i}^{n + 2} = b_{j + 1,i}^{n + 2} + \frac{{\delta _{j,\alpha - \lambda }^{n + 1}}}{{\delta _{i,\alpha }^{n + 1}}}b_{j,i}^{n + 1} - \frac{{\delta _{j,\alpha - \lambda }^{n + 1}}}{{\delta _{i - 1,\alpha }^{n + 1}}}b_{j,i - 1}^{n + 1} $ (21)

$ \begin{array}{*{20}{c}} {\mathit{\boldsymbol{b}}_{j,i}^2 = }\\ {\left( {\begin{array}{*{20}{c}} {C_0^2\left( {\lambda ;\alpha } \right)}&{C_1^2\left( {\lambda ;\alpha } \right)}&{C_2^2\left( {\lambda ;\alpha } \right)}\\ 0&{\frac{{\cos \left( {\frac{\alpha }{2}} \right)\sin \left( {\frac{{\alpha - \lambda }}{2}} \right)}}{{\sin \left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{{\alpha - \lambda }}{2}} \right)}}}&{\frac{{\sin \left( {\frac{\lambda }{2}} \right)}}{{\sin \left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{{\alpha - \lambda }}{2}} \right)}}}\\ 0&0&1 \end{array}} \right)} \end{array} $ (22)

细分方案对任意 $n$ 均成立。它包括 $n$ =2[21] $n$ =3[23]的情况。图 3给出了细分的实例,其中 $α$ =2, $λ$ =1.2。

图 3 内部C-Bézier曲线细分的例子
Fig. 3 Example for subdividing an inner C-Bézier curve

根据定理2,可以给出以下细分形式的运动。

定理 3 以细分形式沿整体C-Bézier曲线的运动。如果 $μ$ ∈[0, ${\rm{ \mathsf{ π} }}$),那么参数为[ $λ$ , $λ$ + $μ$ ]的整体C-Bézier曲线式(1)的任意段都可表示为内部C-Bézier曲线式(5)的形式,{$ {\mathit{\boldsymbol{V}}_i} $, $i$ =0, 1, …, $n$ +2}计算步骤为

1) 由式(20)—式(22)及式(16)可得

$ \left\{ {{\mathit{\boldsymbol{R}}_i},i = 0,1, \cdots ,n + 2} \right\} $

2) 由式(17)—式(19)可得

$ {\mathit{\boldsymbol{V}}_i} = \sum\limits_{j = i}^{n + 2} {a_{i,j}^{n + 2}{\mathit{\boldsymbol{R}}_j}} $ (23)

式中, $α$ - $λ$ , $μ$ 分别代替 $α$ , $λ$

2.3 线性插值形式

线性插值形式表示为

$ \begin{array}{*{20}{c}} {\mathit{\boldsymbol{P}}_i^{\left[ k \right]} = \left( {1 - r_{i,k}^{n + 2}} \right)\mathit{\boldsymbol{P}}_{i - 1}^{\left[ {k - 1} \right]} + }\\ {r_{i,k}^{n + 2}\mathit{\boldsymbol{P}}_i^{\left[ {k - 1} \right]};i = k,k + 1, \cdots ,n + 2} \end{array} $ (24)

式中,$ \left\{ {\mathit{\boldsymbol{P}}_i^{\left[k \right]}} \right\} $是第 $k$ 次插值生成的点, $ r_{i, k}^{n + 2} $$ \mathit{\boldsymbol{P}}_i^{\left[{k-1} \right]} $的组合系数,且

$ \mathit{\boldsymbol{P}}_i^{\left[ 0 \right]} = {\mathit{\boldsymbol{P}}_i} $ (25)

先考虑特殊的细分情况下线性插值形式。

令{$ C_{i, k}^{n + 2} $( $t$ ), $i$ =0, 1, …, $n$+2+$k$}是在原始区间[0, $α$ ]上用 $n$ +2重节点0和 $α$ 插值 $k$ 次节点 $λ$ ∈[0, $α$ ]后所生成的NUAT-B样条基。线性插值形式可通过插节点过程获得[24]。然而,由于$ C_{i, k}^{n + 2}\left( t \right) $是分段的并且有支撑区间,所以它并不能适应整体情况。为了解决这一问题,递归过程中不能出现$ C_{i, k}^{n + 2}\left( t \right) $。所以使用$ C_{i, k}^{n + 2}\left( t \right) $ $t$ 轴之间区域的面积取代它,即

$ \bar \delta _{i,k}^{n + 2}: = \int_0^\alpha {C_{i,k}^{n + 2}\left( t \right){\rm{d}}t} $

这是一个关于 $λ$ 的函数,且可被推广。

首先,给出$ \bar \delta _{i, k}^{n + 2} $的递归。基于文献[24]提出的$ \left\{ {C_{i, k}^{n + 2}\left( t \right)} \right\} $ $λ$ ∈[0, $α$ ]处的细分方案间的关系,可得到关于的$ \bar \delta _{i, k}^{n + 2} $引理2。

引理 2 如果 $λ$ ∈[0, $α$ ],则

$ \bar \delta _{i,k}^{n + 2} = \left\{ \begin{array}{l} \delta _{i,\lambda }^{n + 2}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;i = k - 1\\ r_{i,k + 1}^{n + 2}\bar \delta _{i,k + 1}^{n + 2} + \\ \left( {1 - r_{i + 1,k + 1}^{n + 2}} \right)\bar \delta _{i + 1,k + 1}^{n + 2}\;\;\;\;k \le i \le n + 2\\ \delta _{n + 3 - k,\alpha - \lambda }^{n + 2}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;i = n + 3 \end{array} \right. $ (26)

式中, $k$ = $n$ +3, $n$ +2, …, 1。

注意到式(26)中,当 $k$ = $n$ +3时,仅定义了两项$ \bar \delta _{n + 2, n + 3}^{n + 2} $$ \bar \delta _{n + 3, n + 3}^{n + 2} $。所以如果给定 $n$ $ \left\{ {r_{i, k}^{n + 2}} \right\} $,则可得$ \bar \delta _{i, k}^{n + 2} $。当 $k$ =0时,作为边界情况,对任意 $n$

$ \bar \delta _{i,0}^{n + 2} = \delta _{i,\alpha }^{n + 2} $ (27)

下面考虑$ \left\{ {r_{i, k}^{n + 2}} \right\} $的递归。

引理 3 当 $n$ ≥1时,对于 $λ$ ∈[0, $α$ ]有

$ r_{i,k}^{n + 2} = \left\{ \begin{array}{l} 1\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;i = k - 1\\ \frac{{\bar \delta _{i - 1,k}^{n + 1}}}{{\bar \delta _{i - 1,k - 1}^{n + 1}}}r_{i - 1,k}^{n + 1}\;\;\;\;\;k \le i \le n + 2\\ 0\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;i = n + 3 \end{array} \right. $ (28)

引理可被作为文献[24]所述的$ \left\{ {C_{i, k}^{n + 2}\left( t \right)} \right\} $的节点插入过程的一种情况,这点不需要证明。由式(28)可得

$ \begin{array}{l} \left( {\mathit{\boldsymbol{r}}_{i,k}^2} \right) = \\ \left( {\begin{array}{*{20}{c}} 1&{}&{}\\ {\frac{{\cos \left( {\frac{\alpha }{2}} \right)\sin \left( {\frac{\lambda }{2}} \right)}}{{\sin \left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{\lambda }{2}} \right)}}}&1&{}\\ {\frac{{\sin \left( {\frac{\lambda }{2}} \right)}}{{\sin \left( {\frac{\alpha }{2}} \right)\cos \left( {\frac{{\alpha - \lambda }}{2}} \right)}}}&{\frac{{\sin \left( {\frac{\lambda }{2}} \right)\cos \left( {\frac{{\alpha - \lambda }}{2}} \right)}}{{\sin \left( {\frac{\alpha }{2}} \right)}}}&1\\ 0&0&0 \end{array}} \right) \end{array} $ (29)

式中, $k$ =1, 2, 3且 $i$ = $k$ -1, $k$ , …, 3。

定理 4 线性插值形式的细分。令 $λ$ ∈[0, $α$ ],则[0, $α$ ]上的任意内部C-Bézier曲线式(1)在点$ \mathit{\boldsymbol{P}}$( $λ$ )处可细分为两个C-Bézier段式(13) (14),其控制顶点分别为

$ {\mathit{\boldsymbol{Q}}_i} = \mathit{\boldsymbol{P}}_i^{\left[ i \right]} $ (30)

$ {\mathit{\boldsymbol{R}}_i} = \mathit{\boldsymbol{P}}_n^{\left[ {n - i} \right]} $ (31)

式中,$ \left\{ {\mathit{\boldsymbol{P}}_i^{\left[k \right]}} \right\} $是由式(24) (25)递归生成,且$ \left\{ {r_{i, k}^{n + 2}} \right\} $由式(26)—式(29)得到。

再考虑一般情况下沿整体C-Bézier曲线运动的线性插值形式。由于引理2和引理3用一些$ \delta _{i, \lambda }^{n + 2}, \delta _{i, \alpha - \lambda }^{n + 2} $$ \delta _{i, \alpha }^{n + 2} $的组合去替代分段多项式$ \left\{ {C_{i, k}^{n + 2}\left( t \right)} \right\} $。所以,引理也适用于区间[0, $α$ ]外的 $λ$ 。然而内部C-Bézier曲线的参数区间的长度需要小于 ${\rm{ \mathsf{ π} }}$ ,定理4不能直接推广。不过随着内部C-Bézier曲线参数区间的变化,尽管内部形式可能不存在,整体曲线上每个点的位置却不会改变。针对这点,可使用递归求值。

像Bézier曲线一样,定理4也给出$ \mathit{\boldsymbol{P}}\left( \lambda \right) $递归求值过程

$ \mathit{\boldsymbol{P}}\left( \lambda \right) = \mathit{\boldsymbol{P}}_{n + 2}^{\left[ {n + 2} \right]} $ (32)

$ {{\mathit{\boldsymbol{P'}}}_n}\left( \lambda \right)\left\| {\mathit{\boldsymbol{P}}_{n + 1}^{\left[ {n + 1} \right]}\mathit{\boldsymbol{P}}_{n + 2}^{\left[ {n + 1} \right]}} \right. $ (33)

式中, $λ$ ∈[0, $α$ ]。对于任意 $λ$ 和任意 $μ$ ∈(0, ${\rm{ \mathsf{ π} }}$ ),在[ $λ$ , $λ$ + $μ$ ]上的C-Bézier曲线段用两次递归求值表示,由此可产生线性插值(包括内插和外插)形式。最后,有定理5。

定理 5 以线性插值形式沿整体C-Bézier曲线的运动。如果 $μ$ ∈[0, ${\rm{ \mathsf{ π} }}$ ),则参数为[ $λ$ , $λ$ + $μ$ ]上的整体C-Bézier曲线式(1)的任意段可表为形如式(5)的C-Bézier形式,式中控制顶点为

$ {\mathit{\boldsymbol{V}}_i} = \mathit{\boldsymbol{\bar P}}_i^{\left[ i \right]} $ (34)

其计算步骤为:

1) 由式(24)—式(29)可得

$ \left\{ \begin{array}{l} \mathit{\boldsymbol{P}}_i^{\left[ k \right]};k = 0,1, \cdots ,n + 2;\\ i = k,k + 1, \cdots ,n + 2 \end{array} \right\} $

2) 令

$ \mathit{\boldsymbol{\bar P}}_i^{\left[ 0 \right]} = \mathit{\boldsymbol{P}}_n^{\left[ {n - i} \right]} $ (35)

由式(24), 式(26)—式(29)可得

$ \left\{ \begin{array}{l} \mathit{\boldsymbol{\bar P}}_i^{\left[ k \right]};k = 1,2, \cdots ,n + 2;\\ i = k,k + 1, \cdots ,n + 2 \end{array} \right\} $

式中, $\mathit{\boldsymbol{\bar P}}$ , $α$ - $λ$ , $μ$ 分别取代 $\mathit{\boldsymbol{P}}$ , $α$ , $λ$

图 4给出了一个沿整体曲线运动的示例,其中 $α$ =1, $λ$ =1.2和 $μ$ =0.5。在所有的子图中,末尾红色星号标记的控制顶点是相同的,它们对应的红色曲线都在黑色整体曲线上,这与公式相吻合。

图 4 沿整体C-Bézier曲线运动的例子
Fig. 4 Example for movement along an inner C-Bézier curve
((a) direct form; (b) subdivision form; (c) line interpolation form)

2.4 两条给定内部C-Bézier曲线是否在同一整体曲线上的判断

现在考虑两个给定的内部C-Bézier曲线是否在同一整体曲线上的情况。

假设两条C-Bézier曲线分别是

$ \mathit{\boldsymbol{P}}\left( t \right) = \sum\limits_{i = 0}^{n + 2} {C_i^{n + 2}\left( {t;\alpha } \right){\mathit{\boldsymbol{P}}_i};t \in \left[ {0,\alpha } \right]} $ (36)

$ \mathit{\boldsymbol{Q}}\left( t \right) = \sum\limits_{i = 0}^{n + 2} {C_i^{n + 2}\left( {t;\beta } \right){\mathit{\boldsymbol{Q}}_i}} $ (37)

$ \begin{array}{*{20}{c}} {t \in \left[ {0,\beta } \right];}\\ {\alpha ,\beta \in \left( {0,{\rm{ \mathsf{ π} }}} \right)}\\ {{\mathit{\boldsymbol{P}}_{n + 2}} = {\mathit{\boldsymbol{Q}}_0}} \end{array} $ (38)

由于

$ \left\| {\mathit{\boldsymbol{P}}\left( t \right)} \right\| \le \sum\limits_{i = 0}^{n + 2} {C_i^{n + 2}\left( {t;\alpha } \right)\left\| {{\mathit{\boldsymbol{P}}_i}} \right\|} \le \max \left\| {{\mathit{\boldsymbol{P}}_i}} \right\| $

这表示C-Bézier曲线的误差会被其控制顶点误差所限制。因此,以下算法可用来判断$ \mathit{\boldsymbol{P}}\left( t \right) $$ \mathit{\boldsymbol{Q}}\left( t \right) $是否在同一整体曲线上。

判断两条相邻C-Bézier曲线是否在同一整体曲线上。设 $ε$ ≥0,两条相邻内部C-Bézier曲线为式(36)的$ \mathit{\boldsymbol{P}}\left( t \right) $和式(37)的$ \mathit{\boldsymbol{Q}}\left( t \right) $$ \mathit{\boldsymbol{Q}}\left( t \right) $满足式(38) (39)。在误差 $ε$ 下判断$ \mathit{\boldsymbol{P}}\left( t \right) $$ \mathit{\boldsymbol{Q}}\left( t \right) $是否在同一整体曲线上的步骤如下:

1) 根据$ \mathit{\boldsymbol{P}}\left( t \right) $,应用定理1,计算式(5)$ \mathit{\boldsymbol{V}}\left( t \right) $的控制顶点{$ {\mathit{\boldsymbol{V}}_i} $; $i$ =0, 1, …, $n$ +2}, $λ$ = $α$ , $μ$ = $β$

2) for $i$=0; $n$+2; $i$++

{比较每个$ {\mathit{\boldsymbol{V}}_i} $$ {\mathit{\boldsymbol{Q}}_i} $, 如果‖$ {\mathit{\boldsymbol{V}}_i} $-$ {\mathit{\boldsymbol{Q}}_i} $‖> $ε$ ,则返回FALSE},否则返回TURE。

判断的准确性由误差项 $ε$ 决定, $ε$ =0表示最高精度。

3 应用

1) 沿整体C-Bézier曲线的运动可用于放缩给定C-Bézier曲线的参数区间, 缩放后的控制顶点可由直接形式、细分形式或线性插值形式计算得到,如图 5所示。当参数区间长度增加或减小时,黑色的整体曲线保持不变。

图 5 放缩参数区间的例子
Fig. 5 Example for scaling parameter interval

2) 考虑整体曲线,可用于减少冗余数据。图 6给出一个5圈的螺线。如果将整体螺线表示为4阶内部C-Bézier曲线形式,因为后者的参数区间长度小于${\rm{ \mathsf{ π} }}$,所以至少要用11段,其上共有34个控制顶点。但是如果是整体曲线,则它只需4个控制顶点,并将参数域扩展到[0, 10${\rm{ \mathsf{ π} }}$]即可,扩展后的控制顶点由直接形式、细分形式或线性插值形式计算得到。在下图中,蓝色曲线表示该曲线段,圆圈表示其控制顶点。此外,即使圈数增加,也不需要增加控制点的数量,只需要扩展参数的区间。当只关注这整条螺线的其中一段时,该段的内部形式可由运动来得到,这与传统模式相吻合。

图 6 整体曲线减少冗余的例子
Fig. 6 Example for reducing redundancy by considering integral curve

3) 如果两个相邻的内部C-Bézier曲线在同一整体曲线上,那么在存储时可减少冗余数据。如图 7所示,给定两个6阶内部C-Bézier曲线$ \mathit{\boldsymbol{P}}\left( t \right) $$ \mathit{\boldsymbol{Q}}\left( t \right) $。它们的参数分别为 $α$ =2, $β$ =1,在图 7中,圆圈和星号分别代表相应曲线的控制顶点,且两条曲线在点$ \mathit{\boldsymbol{P}}$5=$ \mathit{\boldsymbol{Q}}$0处相连。如果 $ε$ =0.5,那么两条曲线在同一整体曲线上,其中之一的数据可以用于保存这条整体曲线。如果 $ε$ =0.1,则它们不在同一整体曲线上,还与原来一样,分两段保存。

图 7 判断是否为同一整体曲线的例子
Fig. 7 Example for judging the same integral

4 结论

本文主要讨论的是C-Bézier曲线。它将[0, $α$ ]上的传统内部段和区间外的延拓段作为整体。如果参数区间长度小于 ${\rm{ \mathsf{ π} }}$ ,则C-Bézier曲线可以表示为内部形式。该形式的控制顶点可由给定控制顶点的线性组合或线性插值得到。考虑整体曲线及沿整体曲线的运动,适用于模型的“整体存储,局部聚焦"思想。"整体存储"是指整体曲线可使用单段存储, 以减少冗余数据;"局部聚焦"是指考虑其中某段曲线时,可以将数据(控制顶点和参数域)运动到该段,聚焦的我们关心的局部段上。

但由C-Bézier基递归积分定义式(2)可知,该运动过程很慢。所以,今后可以考虑加速运动的方法。此外,对其他类型的拟C-Bézier曲线[25],由于几何形状和参数区间有所不同,类似的结论还需进一步探讨,这可作为未来研究的另一方向。

参考文献

  • [1] Farin G E. Curves and Surfaces for CAGD:A Practical Guide[M]. 5th ed. San Francisco: Morgan Kaufmann Publishers, 2001.
  • [2] Hoffmann M, Li Y J, Wang G. Paths of C-Bézier and C-B-spline curves[J]. Computer Aided Geometric Design, 2006, 23(5): 463–475. [DOI:10.1016/j.cagd.2006.03.001]
  • [3] Shen W Q, Wang G Z. Geometric shapes of C-Bézier curves[J]. Computer-Aided Design, 2015, 58: 242–247. [DOI:10.1016/j.cad.2014.08.007]
  • [4] Zhang J W. C-curves:an extension of cubic curves[J]. Computer Aided Geometric Design, 1996, 13(3): 199–217. [DOI:10.1016/0167-8396(95)00022-4]
  • [5] Chen Q Y, Wang G Z. A class of Bézier-like curves[J]. Computer Aided Geometric Design, 2003, 20(1): 29–39. [DOI:10.1016/S0167-8396(03)00003-7]
  • [6] Wang G Z, Li Y J. Optimal properties of the uniform algebraic trigonometric B-splines[J]. Computer Aided Geometric Design, 2006, 23(2): 226–238. [DOI:10.1016/j.cagd.2005.09.002]
  • [7] Carnicer J M, Peña J M. Totally positive bases for shape preserving curve design and optimality of B-splines[J]. Computer Aided Geometric Design, 1994, 11(6): 635–654. [DOI:10.1016/0167-8396(94)90056-6]
  • [8] Mainar E, Peña J M. Quadratic-cycloidal curves[J]. Advances in Computational Mathematics, 2004, 20(1-3): 161–175. [DOI:10.1023/A:1025813919473]
  • [9] Mainar E, Peña J M. A general class of Bernstein-like bases[J]. Computers & Mathematics with Applications, 2007, 53(11): 1686–1703.
  • [10] Li Y J, Wang G Z. Two kinds of B-basis of the algebraic hyperbolic space[J]. Journal of Zhejiang University-Science A, 2005, 6(7): 750–759. [DOI:10.1631/jzus.2005.A0750]
  • [11] Xu G, Wang G Z. AHT Bézier curves and NUAHT B-spline curves[J]. Journal of Computer Science and Technology, 2007, 22(4): 597–607. [DOI:10.1007/s11390-007-9073-z]
  • [12] Fang M, Wang G Z. ω-Bézier[C]//Proceedings of the 10th IEEE International Conference on Computer-Aided Design and Computer Graphics. Beijing: IEEE, 2007: 38-42. [DOI:10.1109/CADCG.2007.4407852]
  • [13] Cai H H, Wang G J. Construction of cubic C-Bézier spiral and its application in highway design[J]. Journal of Zhejiang University:Engineering Science, 2010, 44(1): 68–74. [蔡华辉, 王国瑾. 三次C-Bézier螺线构造及其在道路设计中的应用[J]. 浙江大学学报:工学版, 2010, 44(1): 68–74. ] [DOI:10.3785/j.issn.1008-973X.2010.01.013]
  • [14] Zhao Y L. Study and application of C-Bézier curves and surfaces of degree n[D]. Nanjing: Nanjing University of Aeronautics and Astronautics, 2005. [赵玉林. 高阶C-Bézier曲线曲面性质研究及其应用[D]. 南京: 南京航空航天大学, 2005.]
  • [15] Chen Q Y, Wang G Z. Representation of arc with C-Bézier curve[J]. Journal of Software, 2002, 13(11): 2155–2161. [陈秦玉, 汪国昭. 圆弧的C-Bézier曲线表示[J]. 软件学报, 2002, 13(11): 2155–2161. ]
  • [16] Long Y T. Continuity conditions for quartic C-Bézier curves with shape parameter[J]. Journal of Shaanxi University of Science & Technology, 2012, 30(5): 113–117. [龙艳婷. 四次C-Bézier曲线的拼接技术研究[J]. 陕西科技大学学报, 2012, 30(5): 113–117. ] [DOI:10.3969/j.issn.1000-5811.2012.05.028]
  • [17] Chen J L. Biarc approximation of C-Bézier curve[J]. Journal of Hangzhou Dianzi University, 2010, 30(1): 78–80. [陈建兰. C-Bézier曲线的双圆弧逼近[J]. 杭州电子科技大学学报, 2010, 30(1): 78–80. ] [DOI:10.3969/j.issn.1001-9146.2010.01.020]
  • [18] Cai H H, Wang G J. Approximating logarithmic spiral segments by polynomial and C-Bézier[J]. Journal of Zhejiang University:Engineering Science, 2009, 43(6): 999–1004. [蔡华辉, 王国瑾. 对数螺线段的多项式逼近与C-Bézier逼近[J]. 浙江大学学报:工学版, 2009, 43(6): 999–1004. ] [DOI:10.3785/j.issn.1008-973X.2009]
  • [19] Liu H Y. Joining C-Bézier curves and surfaces with fairing algorithm[J]. Journal of Hebei Polytechnic University:Natural Science Edition, 2008, 30(1): 75–79. [刘华勇. C-Bézier曲线曲面的光顺拼接算法[J]. 河北理工大学学报:自然科学版, 2008, 30(1): 75–79. ] [DOI:10.3969/j.issn.1674-0262.2008.01.018]
  • [20] Fan J H, Zhang J W, Wu Y J. Shape modification of C-Bézier curves[J]. Journal of Software, 2002, 13(11): 2194–2200. [樊建华, 张纪文, 邬义杰. C-Bézier曲线的形状修改[J]. 软件学报, 2002, 13(11): 2194–2200. ] [DOI:10.13328/j.cnki.jos.2002.11.021]
  • [21] Chen Q Y, Yang X N, Wang G Z. Properties and applications Of degree 4 C-curve[J]. Applied Mathematics A Journal of Chinese Universities, 2003, 18(1): 45–50. [陈秦玉, 杨勋年, 汪国昭. 四次C-曲线的性质及其应用[J]. 高校应用数学学报A辑, 2003, 18(1): 45–50. ] [DOI:10.3969/j.issn.1000-4424.2003.01.008]
  • [22] Sánchez-Reyes J. Harmonic rational Bézier curves, p-Bézier curves and trigonometric polynomials[J]. Computer Aided Geometric Design, 1998, 15(9): 909–923. [DOI:10.1016/S0167-8396(98)00031-4]
  • [23] He L N, Wang G Z. Subdivision for C-curves of degree five[J]. Journal of Zhejiang University:Science Edition, 2004, 31(2): 125–129. [何玲娜, 汪国昭. 五次C-曲线的细分[J]. 浙江大学学报:理学版, 2004, 31(2): 125–129. ] [DOI:10.3321/j.issn:1008-9497.2004.02.002]
  • [24] Wang G Z, Chen Q Y, Zhou M H. NUAT B-spline curves[J]. Computer Aided Geometric Design, 2004, 21(2): 193–205. [DOI:10.1016/j.cagd.2003.10.002]
  • [25] Zhang J W, Krause F L, Zhang H Y. Unifying C-curves and H-curves by extending the calculation to complex numbers[J]. Computer Aided Geometric Design, 2005, 22(9): 865–883. [DOI:10.1016/j.cagd.2005.04.009]