第 27卷 第 1期 
2009年 2月 
石 河 子 大 学 学 报 (自然 科 学 版 ) 
Journal of Shihezi University(Natural Science) 
Vo1.27  No.1 
Fleb.2009 
文章编 号 :100r7.7383(2009)01.0l18.04 
B样 条 曲线 生成 原 理及 实现 
王增波 ,彭 仁忠 ,宫兆刚 
(衡阳师范学院数学系 ,湖南衡 阳 4210o8) 
摘要 :为了进 一步推广 B样条曲线在各领域 的应用 ,本文从 B样条 曲线 的概念和定 义 出发 ,按节 点矢量 中节点 的 
分布情况把 B样条 曲线划分成均匀 B样条 曲线 、准均匀 B样 条曲线 、分段 贝齐尔 曲线 、一般非均匀 B样条曲线 4种 
类型 ,分 别对它们的特点和实现方法进行 了详 细阐述 ,最后给 出了一个 完整 的各 种 B样条 曲线生 成代码 和运行 结 
果 ,并 进行 了详细的对 比分析 。对于在几何造 型和其 它方 面的应用 具有一定的实际价值 。 
关键词 :B样条 ;控制顶点 ;基 函数 
中 图 分 类 号 :TP391 
文 献 标 识 码 :A 
计 算机 辅 助 几 何设 计 始 兴 于 20世 纪 60年 代 , 
维 、二 维空 间 中轨 迹 的 规 划 l_7 J等 。B样 条 曲线 的 应 
最 初始 于 飞机 、船 舶 的外 形 放 样 工艺 。在 当 时计 算 
用范 围还 在不 断 的扩大 ,同 时也在 不断 的改进 ,因此 
机发展 的影 响下 ,为 了利 用 计 算 机 更 高效 地进 行 设 
对它的研究具有一定 的应用价值和推广价值 。 
计 ,人 们 开始 寻找研 究 曲线 或 曲面 的表示方 法 ,其 中 
B样 条 曲线造 型方 法 的理论 基 础 是 B样 条 ,下 
最著名 、最 实用 的 是 法 国 雷诺 汽车 公 司 的 工 程 师提 
面从 B样条的定义和性质 ,以及各种 B样条曲线的 
出的 B6zier技术llj和美 国机械工程师 Coons提出的 
定义 和程 序实 现方 法进行 阐述 。 
Coons技术 【2,3J。在 大 多数 情 况 下 ,描 述 产 品 外 形 的 
曲线或 曲 面只有 大概 形状 或者 只知 道它 所通 过 的一 
系列 空 间点 列 ,这 些点 称 为控 制点 ,这类 曲线 或 曲面 
叫 自由曲线或 自由曲 面 ,而 计算 机辅 助 几 何 设 计 就 
是研 究 自由曲线 曲面 的 表示 、设计 、显 示 、分 析 与综 
合以及处理等 问题 。B样条曲线是 Bezier曲线 的改 
进 ,对 于 Bezier曲线 来说 ,特征 多边 形 顶点个 数 决 定 
了 Bezier曲线 的阶次 ,并且当 n较大时 ,特征多边形 
1  B样 条 曲线 生 成 的 原 理 
1.1  B样 条 曲线 的定 义 
B样条 的 概 念 是 Schoenberg于 20世 纪 4o年 代 
提 出的 [ , ,如今 由 De B()or[m,11]和 C0x[12]分别 提 出 
的递推定义 ,由于其递推的性质使得计算 非常简便 
且很 稳定 ,所 以得 到 了普 遍 认 同。 由 de Boor和 Cox 
分别 导 出 的 B样条 递 推定义 ,B样条 可表 示 为 
对 曲线 的控 制将 会减 弱 。改变 一个 控制 顶点 的位 置 
‰ ㈩ = 
+l' 
会影 响 整个 曲线 的 形 状 ,这 不 利 于对 曲线 的局 部 修 
改 ,且 Bezier曲线 在 很 多 情 况 下 不 能反 映特 征 多 边 
)= 
‰ ㈩ + 
形的特点。1972—1974年 Gorden等将 Bezier的基 函 
(1) 
数换 成 B样条 函数 ,从 而 构造 了等 距 离节 点 的 B样 
+ l,k- l(  >o, 
条曲线 ,也称为均匀 B样条 曲线 。 
B样条 曲线 的应 用 范 围 非 常广 泛 ,不 仅 在 几 何 
造型方面 ,还应用到其它许多方面 ,如应用 B样条 
函数处理力学 问题 j,结合小波方法应用于 图像的 
约定罟=0。 
式 (1)中 ,k表 示 B样条 的幂 次 ,t为 节点 ,下 标 i为 
B样 条 的序号 。 
完堑眭认证l5』,应用于实验数据的压缩[6]6,应用于一 
式(1)表明,欲确定第 i个 k次 B样条  . ( ) 
收稿 日期 :2008.06.18 
基金项 目:湖南 省教育厅科研项 目(07B~)9) 
作者简介 :王增波 (1975一),男 ,讲师 ,西安科技大学计算机应用专业硕 士,研究方 向:计算机图形学 ,e-mail:wonbo@126.tom。 
第 1期 
王增波 ,等 :B样条曲线生成原理及实现 
119 
需 用 到 ti,ti+  一,ti+ +1共 k+2个 节 点 ,方程 中 n 
时 ,由这些 顶点 定 义的 k次 B样 条 曲线 段 退化 到这 
+1个 控 制顶 点 di(i=0,1,… ,孔)要用 到  +1个 k 
一 个重合点;顺序 k+1个顶点共线时,由这些顶点 
次 B样条基 函数 M. ( )(i:0,1,… ,n)。考察 B 
定 义的  次 B样条 曲线 段退 化 为一 直线段 。 
样条 曲线 定 义 在 区间  ∈[t ,t +1]上 那 一 曲线 段 , 
略去其中基函数取零值 的那些项 ,则可表示为 
i 
P( )= ∑  , ( ), ∈[t ,t +1], 
(2) 
式 (2)表 明 ,k次 B样 条 曲线 上定义 域 内参数 为 
∈[t ,t +1]的一 点 P( )至 多与 k+1个 顶 点  ( 
=i—k, —k+1,… ,i)有 关 ,与其 它顶 点无关 。 
1.2  B样条 曲线 的种类及主 要性质 
本文按不同属性对 B样条曲线分类 ,其中一种 
分类法是按节点在 曲线定义域内是否均匀分布将 B 
样条 曲线 划 分 为 均 匀 与 非 均 匀 。决 定 B样 条 曲线 
性质 最 重要 的属性 是 节 点矢 量 ,ISO制定 的 STEP国 
际标 准 正是 按照 节点 矢量 中节 点 的分布 情况 不 同给 
出 B样条 曲线 的类 型 划分 。 
由于零次 与一 次 B样 条 曲线 分 别 就 是 控 制 顶 
点与控制多边形 自身 ,与所取节点矢量无关 ,所以下 
述按 节 点矢 量分 类 的 方法 ,尽 管 对 零次 与 一 次 B样 
条曲线也适用 ,但 已经没有意义 。下 面考虑高于一 
次 的 B样 条 曲线 。仍 给定 控 制 顶 点 d j:=i—k,i 
— k+1,… ,i)与次 数 k,有 节 点 矢 量 T:[to,t】… , 
t + + ]。B样条曲线按节点矢 量 中节点 的分布情 
况不同,可划分为以下 4种类 型 :均匀 B样条 曲线 、 
准均匀 B样 条 曲线 、分段 贝齐 尔 曲线 、一般 非均 匀 B 
样 条 曲线 。均 匀 、准 均 匀 和非 均 匀 3种 类 型早 就 存 
在 ,STEP标 准支持 把 分段 贝齐尔 曲 线作 为一 种 特殊 
类 型 。 
B样条曲线具有 以下主要性质 ,正是 因为这些 
性质的存在 ,才使它得到了广泛的应用 。 
1)递推 性 。 由上 述定 义表 明 。 
2)局 部 性 质 。定 义 在 非 零 节 点 区 间  ∈ [t , 
ti+1]上 的 k次 B样 条 曲线 ,由 k+f个控 制 顶 点 及 
5)变 差减 少性 质 。任一平 面 与 B样条 曲线 的交 
点个数不会超过它与控制多边形的交点数 ,但包含 
整个控制多边形的平面除外。该性质导致凸性定理 
成 立 ,即若定 义平 面 B样条 曲线 的控 制 多 边 形 是 凸 
的 (指 连接 首末 顶点 构成 的封 闭多 边形 为凸 的 ,相 重 
边情况除外 ),则该平面 B样条 曲线也是凸的。 
6)磨光性 质 。除共线 顶点 外 ,次 数越 高 ,B样 条 
曲线距 离 定义 它 的控制 多边 形越远 。同一组 控制 顶 
点定义的 B样条曲线 ,随次数的升高越来越光滑 。 
7)几 何不 变性 与仿射 不 变性 。 
2  B样 条 曲线 的生 成 方 法 
2。1  均 匀 B样 条 曲线 
均匀 B样 条 曲线节点矢量 中节 点为沿参数轴 
均匀或等距分布 ,所有节点区间长度 :△  t£+1一t 
= 常数 >0(i:0,1,… ,n+k)。这 样 的 节点 矢 量定 
义 了均 匀 B样 条基 。程 序 中可 以用一 维数 组 t保存 
节 点矢 量值 ,在 VC编 程 中使 用 以下 语 句 对 节 点矢 
量进行 赋值 : 
f0r(i:0;i<=n+k+1;i++) t[i]=i; 
2.2 准均匀 B样 条 曲线 
其节点矢量 中二端节点具有重复度 k+1,即 t。 
=t1=… =t ,t +1=t +2=… =t + +l,所 有 内节 点 
均匀分布 ,重复度 为 1。定义域  ∈[t ,t +1]内节 
点 区间 长度 A =常数 >0(i=k,k+1,… ,n)与均 匀 
B样 条 曲线定 义 域 内节 点 分 布 相 同 ,差 别 仅 在 于 二 
端节点 。这样的节点矢量定义了准均匀 B样条基 。 
在 VC编程 中用 以下 语句 对节 点矢 量赋 值 : 
for(i=0;i< =k;i++)t[i]=0; 
f0lr(i:k+1;i<13+1;i++)t[i]:i; 
for(i=13+1;i<=n+k+1;i+ +)t[i]=n 
相 应 的 B样 条基 函数 确定 ,与 其它 顶点 无关 。 
+ 1。 
3)可微性 。k次 B样条曲线在其定义域内的非 
2.3 分段贝齐尔 曲线 
零 节点 区 间 内部 是无 限 次可 微 的 ,即是 c 的 ,或 者 
说具 有无 穷 阶连 续性 ;在定 义 域 内重 复 度 为 r的节 
其 节点 矢量 中二 端节 点 重 复 度 与 类 型 2相 同 , 
为 k+1。所不同的是 ,所有 内节点重复度为 k。选 
点处 则是 k—r次 可微 的 ,即是  一的 ,或 者 说 是 具 
用 该类 型有个 限 制 条 件 ,控 制 顶 点数 减 1必 须 等 于 
有 后一r阶连续性 。 
次数的正整数倍 ,即 n/k正整数。这样的节 点矢量 
4)凸包性 质 。B样 条 曲线 的凸 包是 多个 曲线 段 
定义了分段伯恩斯坦基。 
凸包 的并集 ,其凸包 区域小于或等于同一组控制顶 
在 VC编程 中用以下语句对节点矢量赋值 : 
点定 义 的 B6zier曲线 凸包 区域 ,B样 条 曲线 恒 位 于 
for(i=0;i< =k;i+ +)t[i]=0; 
其 凸 包 之 内 。该 性 质 导 致 顺 序 k+1个 顶 点 重 合 
for(i=k+1;i
120 
石河 子大学学 报(自然科学版 ) 
第 27卷 
for(int j=0;j
第 1期 
王增波 ,等 :B样条 曲线生成原理及 实现 
121 
lif(!DragOk)pnum=times;times:O;return;} 
线用分段 Bezier曲线表示后 ,各 曲线段就具有 了相 
else 
对的独立性 ,移动曲线段内的一个控制顶 点只影响 
{if(abs(int(X—con[0].x))==0&&abs(int(Y 
该 曲线段的形状 ,对其它曲线段的形状没有影响 ,并 
— con[0j.y))==0)O:true; 
if(bType! =3llbType==3&&0) 
if(begin){dc一>MoveTo(int(x),int(y));begin 
=0;} 
else 
且 Bezier曲线 一 整套简 单 有效 的算 法 都可 以原 封 不 
动地采 用 。 
参考 文献 : 
[1]Brzier P E.Example of all existing system in motor industry: 
the UNISURF system[J].Proc Roy Soc of london,1971, 
if(x v!=0)dc一>LineTo(int(x),int(y));} 
A321:207-218. 
} 
3 小 结 
由上述 B样 条 曲线 的定 义 、性质 和实 现可 见 : 
1)B样条曲线采用的基函数保持 了用控制顶点 
定义曲线 ,从而继承 了贝齐尔方法所具有 的优 良的 
控 制性 质 ,同 时 ,又克 服 了贝齐 尔方 法不 具有 局部 性 
质 的缺点 ,并在参数连续性上轻而易举地解决 了贝 
齐尔 方法在 描述 复杂 形状 遇 到 的连 接 问题 。图 2显 
示 了在相 同控 制 顶 点 下 绘 制 出 的 贝齐 尔 曲 线 和 B 
样条曲线 ,可以看出 B样条曲线在左起第 4个控制 
[2]Coons S A.Surfaces for computer aided design of space fnns 
[R].can1 d  Mass:MIT Project MAC—TR-255,1964. 
[3]Coons S A.Surfaces for computer mded design of space forms, 
MIT Project 
[4]杜双兴 ,殷 学 文 ,李 琪华 .B.SPline高 阶元方 法在 三维 水 
弹性力学 中的应用 [J].船舶力学 ,2000,4(1):l7.23. 
[5]孙 玉文 ,陈伟卿 .B样条 技术 在 RPM切 片数据处 理 中的 
应用 [J].航空精密制造技术 ,2002,38(4):30-32. 
[6]葛玉琛 ,程 昌年 .实验数 据 的 B样条压 缩法 [J].天津 职 
业技术师范学院学报 ,2000,10(1):15.16. 
[7]任 重 ,杨灿军 .陈 鹰 .轨迹规划 中的 B样条插值 算法 
[J].机电工程 ,2001,18(5):38.39. 
点上 所展 现在 连接 方 面的优 势 。 
[8]Sehoenberg I J.Contributions to the Problem of Approximation 
2)B样条 曲线 划分 的 4种类 型 中 ,均 匀 、准均 匀 
of Equidistant Data by Analytic Functions[J].Quart Appl 
与分段贝齐尔 3种类型都可以看成一般非均匀的特 
Maths,1946,(4):45-99,112.141. 
例 。均匀 B样 条 曲线 在 曲线 定 义 域 内各 节 点 区 间 
[9]Curry H B,Sehoenberg I J.On.Spline Distributions and Their 
上具有 用局 部参 数 表 示 的统 一 的表 达 式 ,使 得 计 算 
与处理简单方便 ,但用它定义的均匀 B样条 曲线没 
有保 留 Bezier曲线 端 点 的几 何 性 质 ,即样 条 曲线 的 
首末 端点不 再是 控 制多边 形 的首末 端 点 ,如 图 1a所 
示 。采 用准 均 匀 的 B样 条 曲线 就 是 为 了解 决 这 个 
问题 ,使曲线在端点的行 为有较好 的控制 ,如图 lb 
Limits:Th e Polya Distribution Functions[J].American Mathe- 
matieal Soc,1947,53:1114. 
1lO]De Boor C.On Calculating with B—Sphne[J].J Approx Theo— 
ry,1972,(6):50-62. 
【l1] De Boor C.A Practical Guide of Splines[M].Newyork: 
Spring er,1978. 
[12]Cox M.G.The numerical Evaluation of B-Splines[J].J INST 
所示。分段 Bezier曲线实例如图 1c所示 ,B样条 曲 
Maths AppIicati0n,1972,10:134—149. 
The Creating Principle and Realization of B-spline Curve 
WANG Zeng—bo,PENG Ren—zhong,GONG Zhao—gang 
(Hengyang Normal University,Hengyang,Hunan 421008,China) 
Abstract:To further promote the application in various fields,this paper described the basic concept and definiti0n 0f B. 
spline Curve an d they were divided into four types under nodes distribution of node vector. The four types are a uniform B. 
spline curve,a quasi—uni~rm B—spline curve,a sub.Brzier curve,and a general non-uniform B—spline curve.Four methods 
have been introduced in detml and analyzed comparatively.Th eir source codes.running results and a detailed compar~ive 
analysis were giveu.This paper has certain application value to implement the geometric modeling and others. 
K ey words:B-spline;control points;basis function