logo
天地变化的道理
使用率很高网站
生活要常常分享
您身边百科全书
B样条
在数学的子学科数值分析里,B-样条是样条曲线一种特殊的表示形式。它是B-样条基曲线的线性组合。B-样条是贝兹曲线的一种一般化,可以进一步推广为非均匀有理B样条(NURBS),使得我们能给更多一般的几何体建造精确的模型。 De Boor算法是一个数值上稳定的计算B样条的方法。 术语 "B样条"是Isaac Jacob Schoenberg创造的,B 是基(basis)样条的缩略。 定义. 给定"m"+1 个节点"t""i" ,分布在[0,1]区间,满足 formula_1 一个"n"次B样条是一个参数曲线: formula_2 它由"n"次B样条基(basis B-spline)组成 formula_3. P"i"称为控制点或de Boor点. "m"+1个"n"次B样条基可以用Cox-de Boor递归公式 定义 formula_4 formula_5 当节点等距,称B样条为均匀(uniform)否则为非均匀(non-uniform)。 均匀B样条曲线. 当B样条是均匀的时候,对于给定的"n",每个B样条基是其他基的平移拷贝而已。一个可以作为替代的非递归定义是 formula_6 满足 formula_7 满足 formula_8 其中 formula_9 是截断幂函数(truncated power function) 注解. 当节点数和多项式次数相等时,B样条退化为贝兹曲线。即函数的形状由节点的位置决定。缩放或者平移节点向量不会改变基函数。 样条包含在它的控制点的凸包中 "n"次B样条的一个基 formula_10 仅当在区间["t""i", "t""i+n+1"]上非0。就是 formula_11 换句话说,如果我们操作一个控制点,我们只改变曲线在局部的行为,而不像Bezier曲线那样是全局行为。 例子. 常数B样条. 常数B样条是最简单的样条。只定义在一个节点距离上,而且不是节点的函数。它只是不同节点段(knot span)的指示函数。 formula_12 线性B样条. 线性B样条定义在两个相邻的节点段上,在节点连续但不可微。 formula_13 三次B样条. 一个片断上的B样条的表达式可以写作: formula_14 其中S"i"是第"i"个B样条片断而P是一个控制点集,"i"和"k"是局部控制点索引。控制点的集合会是formula_15的集合,其中formula_16是比重,当它增加时曲线会被拉向控制点formula_17,在减小时则把曲线远离该点。 片段的整个集合"m"-2条曲线(formula_18)由"m"+1个控制点(formula_19)定义,作为"t"上的一个B样条可以定义为 formula_20 其中"i"是控制点数,"t"是取节点值的全局参数。这个表达式把B样条表示为B样条基函数的线性组合,这也是这个名称的原因。 有两类B样条-均匀和非均匀。非均匀B样条相邻控制点间的距离不一定要相等。一个一般的形式是区间随着插入控制点逐步变小到0。 B样条的程式指令. Matlab. In Matlab,the command“spline” can be used for spline interpolation. Cubic B-Spline Interpolation by Matlab Generating a sine-like spline curve and samples it over a finer mesh: x = 0:1:10; % original sampling points y = sin(x); xx = 0:0.1:10; % new sampling points yy = spline(x,y,xx); plot(x,y,'o',xx,yy) Python. 事前安装模组 Cubic B-Spline Interpolation by Python from scipy.interpolate import interp1d import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 11) # original sample points, [0, 1, 2, …, 9, 10] y = np.sin(x) f = interp1d(x, y, kind=' cubic ') ) # Cubic means the cubic B-spline. x_new = np.arange(0, 10.1, 0.1) # new sample points, [0, 0.1, 0.2, ….., 9.9, 10] y_new = f(x_new) plt.plot(x,y,'o',x_new, y_new) plt.show() B样条曲线及曲面相关算法. 关于此处涉及的算法,在著作中有针对Bézier、B样条(B-spline)以及非均匀有理B样条(Nurbs)的相关算法的详细数学表达和程序实现方法。 求导. 在几何处理中,对参数曲线及曲面的求导是最基本的运算之一,由于参数表达的特性,在给定点的切线及法线可通过求导直接得到。 先来考察曲线的情形:采用本页定义中的B样条曲线表达式 formula_3 对参数formula_22进行求导: formula_23 参考. 本条目部分或全部内容出自以GFDL授权发布的《自由线上电脑词典》(FOLDOC)。 参考文献.
B样条
生成维基百科快照图片,大概需要3-30秒!
如果网站内容有侵犯您的版权
请联系:pinbor@iissy.com
Copyright ©2014 iissy.com, All Rights Reserved.