第 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