利用java语言对三次样条曲线的实现
2014-04-19刘丹
刘丹
(大连广播电视大学 理工系,辽宁 大连 116021)
利用java语言对三次样条曲线的实现
刘丹
(大连广播电视大学 理工系,辽宁 大连 116021)
计算机绘图的核心是画线,文中通过对样条曲线的数学概念进行分析,应用java语言中的系统相关类给出三次样条曲线的实现过程.
java 2d技术;样条曲线;平滑曲线
Java语言中关于曲线问题的高级应用开发在jdk尚未支援2D图形之前,只可以画出直的、相同粗细的线条.现在可以通过2D API绘出不同粗细的线条及圆滑的曲线.通过系统java.awt.geom包中提供了Line2D、QuadCurve2D(二次贝塞尔曲线)及CubicCurve2D(三次贝塞尔曲线)等相关的类,让程序员能够轻松地绘出想要的线条.但想要画出更平滑的多个数据样本点的时候,贝塞尔曲线就不能满足要求了,为此,我们应采用样条曲线来完成.而曲线平滑的原则是,必须通过所有的样本点,另外,不论有多少样本点,曲线的阶次最大为三次,所以是稳定的.
1 三次样条曲线的数学原理
1.1 三次样条曲线的定义
对于给定的n个型值点Pi(xi,yi),且hi=xi+1-xi>0,i=1,2,..,n,若y=s(x)满足下列条件:
(1)在Pi(xi,yi)点上有yi=s(xi);
(2)S(x)在[x1,xn]上二阶连续可导;
(3)在每个子区间[xi,xi+1]上,s(x)是x的三次多项式;则称s(x)为过型值点的三次样条函数,由三次样条函数构成的曲线称为三次样条曲线.
三次样条函数曲线的求解条件
已知:
(1)n个数据点Pi(xi,yi),i=1,..,n
(2)每一段都是三次的多项式函数曲线
(3)节点达到二阶连续
(4)两个端点的特性(固定端抛物端自由端)
1.2 三次样条函数曲线的求解方法
曲线:
2 java编写的三次样条曲线关键代码
根据三次样条函数曲线的求解方法给出满足条件代码编辑
3 样图展示
〔1〕孙正兴.计算机图形学教程[M].机械工业出版社,2006.
〔2〕(美)Peter Shirley.计算机图形学[M].人民邮电出版社,2007.
〔3〕百度文库.JAVA 2D高级绘图.
TP312JA
A
1673-260X(2014)02-0008-02