本文主要是介绍计算机图形学--------充分理解B样条曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
样条(spline)二字,从英文翻译过来的,让人费解。B样条的数学定义更是让人匪夷所思。看了好几本参考教材,还是把总结一下B样条这个概念。
一、解释什么是样条。
实际应用中,样条是一根富有弹性的细木条或塑料条。在应用CAD/CAM技术以前,航空、船舶和汽车制造业普遍采用手工绘制自由曲线。绘制员用压铁压住样条,使其通过所有给定的型值点,再适当地调整压铁,改变样条形态,直到符合设计要求。所以在绘图术语中,样条是通过一组指定点集而生成平滑曲线的柔性带。样条曲线(spline curve)原指用这种方式绘制的曲线。
从力学角度考虑,样条可看做一弹性细梁,压铁是作用在梁上的集中载荷。由此,设计样条曲线的过程可抽象为:求弹性细梁在外加集中载荷作用下产生的弯曲变形。
在数学上使用分段的三次多项式函数来描绘这种曲线,其中各曲线段的连接处有连续的一次和二次导数。
在计算机图形学中,样条曲线指由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续性条件。
二、B样条曲线优点;在学习B样条的知识之前,一定要首先了解Bezier曲线在外形设计的应用中存在一些具体的不足之处。主要有一下三点:
1.确定了多边形的顶点数(m个),也就决定了所定义的Bezier曲线的阶次(m-1次),这样很不灵活。
2.当顶点数(m)较大时,曲线的阶次将比较高。此时,多边形对曲线形状的控制将明显减弱。
3.Bezier的调和函数的值,在开区间(0,1)内均不为0。因此,所定义的曲线在(0<t<1)的区间内的任何一点均要受到全部顶点的影响,即改变其中任一个顶点的位置,都将对整条曲线产生影响,因此对曲线进行局部修改是不可能的。
为了克服以上提到的在Bezier曲线中存在的问题,Gordon、Riesenfeld和Forrest等人拓展了Bezier曲线,用n次B样条基函数替换了伯恩斯坦基函数,构造了B样条曲线。B样条曲线除了保持Bezier曲线所具有的有点外,还增加了可以对曲线进行局部修改这一突出的优点。除此之外,它还具有对特征多边形更逼近以及多项式阶次较低等优点。因此,B样条曲线在外形设计中得到了更广泛的重视和应用。
三、Bezier和B样条曲线在控制方式上的联系。
和贝塞尔曲线被“拉向”它的内部控制点的方式差不多,B样条曲线也被“拉向”控制点。不同的是B样条曲线并不必须在第一个和最后一个控制点进行插值;相反,二次曲线在两个控制点的中点开始和结束,而三次曲线在首末两个控制点相邻的控制点附近开始和结束。当然也有办法定义B样条曲线,使之肯定通过首末控制点。而且B样条曲线被控制点的“拉动”更加明显。如下图所示
样条曲面(splinesurface)可以使用两组正交样条曲线进行描述。
参考书目:
计算机图形学实用技术(第3版)陈元琰 张睿哲
计算机图形学(第四版)蔡士杰
这篇关于计算机图形学--------充分理解B样条曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!