程序课程设计报告2012年7月10日B样条方法与十二生肖图的设计专业:信息与计算科学班级:信10-1题目:B样条方法与十二生肖图的设计组长:马金松组员:马浩辰薛俊杰指导教师:张彩霞时间:2012.07.10摘要:我们研究的课题是B样条方法与十二生肖图的设计,因为感觉这个课题比较贴近实际情况,而且此类问题使我们从未接触过的,希望能从这次时间学习中学到更多的matlab以及VC应用知识。在数学的子学科数值分析里,B-样条是样条曲线一种特殊的表示形式。它是B-样条基曲线的线性组合。B-样条是贝兹曲线的一种一般化,可以进一步推广为非均匀有理B样条(NURBS),使得我们能给更多一般的几何体建造精确的模型。术语B样条是IsaacJacobSchoenberg创造的,是基(basis)样条的缩略B样条曲线曲面具有几何不变性、凸包性、保凸性、变差减小性、局部支撑性等许多优良性质,是目前CAD系统常用的几何表示方法,因而基于测量数据的参数化和B样条曲面重建是反求工程的研究热点和关键技术之一。Abstract:关键词:B-样条基曲线贝兹曲线B样条分段混合函数Keywords:1.引言因为我们的选题是《B样条方法与十二生肖图的设计》,它的实际意义在于利用所学过的数学工具,根据B样条函数的原理。利用一系列曲线绘制出想要的图案。B样条函数的性质许多与贝塞尔基函数的相似。Ni,p(u)是一个在u上的p次多项式非负性--对所有的i,p和u,Ni,p(u)是非负的局部支撑(LocalSupport)--Ni,p(u)是在[ui,ui+p+1)上的非零多项式这个在前面已经讨论过。在任一区间[ui,ui+1),最多有p+1个p次的基函数非零,即:Ni-p,p(u),Ni-p+1,p(u),Ni-p+2,p(u),...,和Ni,p(u)单位分解(PartitionofUnity)--所有非零的p次基函数在区间[ui,ui+1)上的和(sum)是1:上一条性质表明Ni-p,p(u),Ni-p+1,p(u),Ni-p+2,p(u),...,和Ni,p(u)在[ui,ui+1)上非零这条性质说明这些p+1个基函数的累加和1.如果节点数是m+1,基函数的次数是p,而p次基函数的数目是n+1,,那么m=n+p+1:这不难理解。设Nn,p(u)是最后一个p次基函数。它在[un,un+p+1)上非零因为它是最后一个基函数,un+p+1肯定是最后一个节点um。因此,我们有un+p+1=um及n+p+1=m.总之,给定m和p,设n=m-p-1则p次基函数是N0,p(u),N1,p(u),N2,p(u),...,和Nn,p(u).基函数Ni,p(u)是p次多项式的复合曲线,连接点在[ui,ui+p+1)上的节点处。上一页的例子很好地说明了这个性质。例如N0,2(u),其在[0,3)上非零,是由定义在[0,1),[1,2)和[2,3)上的三个抛物线构建而成。它们在节点2和3处连接在一起。.在一个有重复度k的节点处,基函数Ni,p(u)是Cp-k连续的。因此,增加重复度减小连续性的层次(level),增加次数增加连续性。上述2次基函数N0,2(u)在节点2和3处是C1连续的,因为它们是简单节点。比较三次B样条曲线与三次Bezier曲线的特性B样条方法是在保留Bezier方法的优点,同时克服其由于整体表示带来不具有局部性质的缺点,及解决在描述复杂形状时带来的连接问题下提出来的。常用的cad设计中之所以选用3次B样条而不用更高次是因为次数越高,控制点影响的曲线段数就越多,不利于局部控制;而三次Bezier曲线意味着必须有4个控制顶点。他们的区别主要有以下4点:1、Bezier曲线的基函数次数等于控制顶点数减1。B样条曲线基函数次数与控制顶点数无关;2、Bezier曲线的基函数是Beinstein基函数,它是个多项式函数。B样条曲线的基函数是多项式样条。3、Bezier曲线是一种特殊表示形式的参数多项式曲线。B样条曲线则是一种特殊表示形式的参数样条曲线。4、Bezier曲线缺乏局部性质,即修改任意一个控制顶点都会对曲线整体产生影响。B样条曲线具有性质,即修改一个控制顶点只会对几段曲线产生影响。基于B样条曲线是分段的Bézier曲线段的集合这一数学特性,通过剖析三次均匀B样条曲线的数学表达及其几何意义,由曲线的几何特性给出了各曲线段Bézier点的几何表示.每段B样条曲线段(三次Bézier曲线段)对应的4个Bézier特征顶点,可以导出该曲线段的B样条基函数.依此为基础,描述了三次均匀B样条曲线构造的原理和过程,并给出了不同曲线段数情况下曲线特征构造和插值构造的相关公式.针对本次课题,我们先选出需要绘制的生肖图案,根据需要计算出所需函数,最后再利用matlab工具绘制。2.课题中涉及的算法的基本思想或基本原理B样条曲线的数学表达式为:在上式中,0≤t≤1;i=0,1,2,…,m所以可以看出:B样条曲线是分段定义的。如果给定m+n+1个顶点Pi(i=0,1,2,…,m+n),则可定义m+1段n次的参数曲线。在以上表达式中:Fk,n(t)为n次B样条基函数,也称B样条分段混合函数。其表达式为:分析课题选择图案计算函数编写代码绘制图像式中:0≤t≤1k=0,1,2,…,n。连接全部曲线段所组成的整条曲线称为n次B样条曲线。依次用线段连接点Pi+k(k=0,1,…,n)所组成的多边折线称为B样条曲线在第i段的B特征多边形。在二次B样条曲线中,n=2,k=0,1,2故其基函数形式为:有了基函数,因此可写出二次B样条曲线的分段表达式为:(i=0,1,2,…,m)m+1段写成一般的矩阵形式为:式中,Bk为分段曲线的B特征多边形的顶点:B0,B1,B2。对于第i段曲线的Bk即为:Pi,Pi+1,Pi+2连续的三个顶点。(见下图)3.算法实现步骤及真实图像实验结果首先我们绘制出了想要的结果的草图,然后根据草图,定义出控制顶点,(因为b样条曲线就是根据控制顶点,控制多边形来绘制图形。)从而绘制出控制多边形,然后根据b养条曲线的定义,编辑出代码,将代码输入进matlab软件中,绘制出想要的结果。4.结论:(本课题研究了什么,有什么意义,如何做的,掌握了什么知识,提高了。。。水平等等)本次课题研究的是b样条曲线以及利用它绘制出十二生肖图案。我们选择绘制“狗”的图案。经过两周的努力我们成功完成任务。在这两周的学习中,我们认识到了b样条曲线在实际应用中的重要地位,也通过这次学习再一次深刻的了解到数学软件的重要性。我们在图书馆查阅资料,在网上搜集不明白的问题。最终章掌握了b样条曲线的实际意义,提高了数学水平,也提高了数学软件的应用能力。真可谓受益匪浅。参考文献(5-8篇)百度文库数字图像处理及MATLAB实现杨杰主编电子工业出版社计算机图形学孙立镌主编哈尔滨工业大学出版社VisualC++实践与提高----数学图像处理与工程应用篇中国铁道出版社附录:a=[11.59.57.55758.5975;13.51414.510.58.53.50.581114];fori=1:7;foru=0:0.001:1;b0=1.0./6.*(1-u).^3;b1=1.0./6.*(3.*u.^3-6.*u.^2+4);b2=1.0./6.*(-3.*u.^3+3.*u.^2+3.*u+1);b3=1.0./6.*u.^3;x=b0.*a(1,i)+b1.*a(1,i+1)+b2.*a(1,i+2)+b3.*a(1,i+3);y=b0.*a(2,i)+b1.*a(2,i+1)+b2.*a(2,i+2)+b3.*a(2,i+3);line(x,y);endendholdona=[8.456.13.75154.756.7553.25;6.7577.25320.513.56];fori=1:6;holdona=[7.28.29.210.210.7111210.29.27.6;14131315.51715.5161211.711.4];holdona=[8.49.2101112;12.611.81111.812.6];fori=1:2;holdona=[11.31110.711.411.912.611.713.211.69.610.110.29.18.47.7;13.711.89.98.58.565.222.77.22.7223.55];fori=1:12;holdona=[4.555.56.26.9;43.5333];fori=1:2;holdona=[456.27.56.24.9;5.53.51.51.534.5];fori=1:3;holdona=[5.542.52.52.5;9.28.27.25.14.0];fori=1:2;holdona=[9.28.78.27.98.28.58.8;12.412.412.411.811.811.912];fori=1:4;holdona=[8.958.78.458.38.15;12.412.412.41211.6];fori=1:2;