APP下载

基于DXF文件格式的三次参数样条曲线的生成

2010-05-18张剑英韦文思

网络安全与数据管理 2010年3期
关键词:弦长样条端点

张剑英 ,许 徽,陈 娟,韦文思 ,夏 杰

(1.中国矿业大学 信电学院,江苏 徐州 221116;2.中国矿业大学 材料科学与工程学院,江苏 徐州 221116;3.河南煤业化工集团焦煤公司计讯处,河南 焦作 454002)

样条函数自提出以来,以其构造简单、易于计算、及很好的力学背景等特点被广泛用于科学计算、工程设计和计算机辅助设计等领域,从而成为最重要的曲线和曲面构造方法之一[1]。

三次样条曲线在使用中存在局限性,且表示方法缺乏几何不变性[2]。即当平面直角坐标系中的型值点发生旋转等几何变形时,其曲线的形状也发生变形,严重时甚至不能保证满足x1<x2<…<xn的条件,对表现曲线的几何形状极为不便;在使用AutoCAD中spline命令绘制样条曲线时,可能导致各型值点的横坐标也不能满足x1<x2<…<xn的条件。为了解决这些问题,一些学者运用向心参数法在周期性三次样条曲线拟合控制多边形时,取得了较小的偏差[3];基于累加弦长的三次参数样条曲线插值在数控系统中取得了较好的效果[4],但是以累加弦长为参数的三次参数样条曲线插值和基样条的函数插值在各分段曲线两端曲率的符号相同的情况下都有可能产生这段曲线上的拐点,造成曲线不光顺。因此一些准则提出检查多余的拐点[5],YE J等人修正了Kjellander的方法[6],并从累加弦长参数化和光顺函数两方面消除了三次参数样条曲线的振荡和回折[7]。章虎冬等人提出了基于离散曲率的三次参数样条曲线的自动光顺算法[8]。

本文以三次样条曲线的第i段的弦长为参数实现该段的三次样条曲线的参数化绘制。

1 AutoCAD接口和DXF文件信息提取

AutoCAD提供了多种软件接口[9],包括 AutoLISP(Auto List Progressing),ADS(AutoCAD Development System,C-based),DCL(Dialog Control Language),ARX(Auto-CAD Runtime Extension,C++based),VBA(Visual Basic for Applications)和 COM/OLE/ActiveX来实现 AutoCAD与其他软件的数据交换。HAO J P等人采用AutoCAD和VBA的可靠性分析可视化系统[10]。于代俊等人在Auto-CAD平台上和VC++开发环境下,利用ObjectARX开发工具包完成了基于三次参数样条曲线等高线的矢量化绘制[11]。ObjectARX开发的应用程序是动态链接库(DLL),该程序与AutoCAD共享一个地址空间,并可直接调用AutoCAD的内部函数,直接访问AutoCAD数据库结构、图形系统以及AutoCAD几何造型核心,实现快速、稳定、实时扩展AutoCAD的功能。本文以图形交换文件(DXF)格式实现AutoCAD与VC++之间的数据交换。

DXF是AutoCAD领域的一种标准数据交换格式,其包含了所有图层的几何形状和几何尺寸,该格式对于提取AutoCAD文件的几何信息提供了强有力的支持。本文将AutoCAD绘制的三次样条图形导出形成DXF格式文件之后,提取出各三次样条曲线的起始端点切向、终止端点切向、型值点数及相应的型值点的坐标值,然后利用提取出的数据绘制三次参数样条曲线。

图1所示为运用高级软件VC++编程提取DXF文件中三次样条曲线的数据和参数绘制三次样条曲线的流程图。

2 三次参数样条曲线的生成

三次参数样条函数的基本要求是:已知n个型值点Pi(i=1,2,…,n),且相邻型值点不重合;若 P(t)满足下列条件:(1)型值点 P 在函数 P(t)上;(2)P(t)在整个[Pi,Pn]上二次连续可导;(3)在每个子区间[Pi,Pi+1]上(i=1,2,…,n-1),Pi(t)都是参数 t的三次多项式,而参数 t以相邻型值点之间的弦长为取值变化范围。则称P(t)是过型值点的三次参数样条曲线。

如果取消了这些向量中的z分量,就变成了二维曲线。

2.1 三次参数样条曲线的生成原理及方法

由于本文绘制二维的三次参数样条曲线,所以第i段的三次参数样条曲线的表达式为:

洪口型为[n、ŋ]尾二分型,根据初步调查,洪口方言中中古咸、深、山、臻摄读作[n]尾,宕、江、曾、梗、通摄读作[ŋ]尾。 例如:

Li为第i段的弦长,且有:

根据定义中给出的已知条件,确定其各待定系数。

对Pi(t)2次求导有:

图1 提取DXF文件中三次样条曲线数据流程图

当 t=0时,第 i段子曲线对应于端点 Pi,则

当 t=Li时,第 i段子曲线对应于端点 Pi+1,则

设第i段子曲线在型值点Pi处的二阶导数向量为Mi,则有:

由上述4式可求得各系数向量为:

因此可得第i段型值点处的二阶导数向量,该段三次参数样条函数为:

利用函数P(t)的一阶导数连续求解各型值点处的二阶导数向量Mi。

又 P′i-1(Li-1)=P′i(0)

则有λiMi-1+2Mi+μiMi+1=Dii=2,3,…,n-1

在AutoCAD中,用spline命令绘制三次样条曲线时,采用边界约束为夹持端,所以

此时各型值点的二阶导数向量Mi可用矩阵表示如下:

用三对角矩阵的追赶法[12]求得二阶导数向量Mi的值,从而写出第i段弦长为参数的三次参数样条曲线函数表达式。

2.2 三次参数样条曲线的显示

本文用VC++编程从AutoCAD将绘有三次样条曲线图形导出DXF格式文件,并从该DXF格式文件中提取所有三次样条曲线的起始端点切向、终止端点切向、拟合点数与拟合点的坐标值。编程求出所有三次样条曲线各段三次参数样条曲线函数表达式,最后用所求的表达式将各三次样条曲线绘制出来。如图2(除外面边框外)、图4(除外面边框和中心的两圆外)所示的图形都是用AutoCAD的spline命令绘制的三次样条曲线。图3、图5分别为图2、图4在AutoCAD中用DXFOUT命令导出形成DXF文件格式,并用VC++编程提取出来的DXF文件信息绘制的三次参数样条曲线图。

图2 AutoCAD绘制的三次样条曲线

图3 VC++绘制的三次参数样条曲线

图4 AutoCAD绘制的三次样条曲线

图5 VC++绘制的三次样条曲线

本文介绍了三次参数样条曲线的研究现状和Auto CAD软件接口,提出了以DXF文件格式为桥梁,实现AutoCAD图形与VC++之间的数据交换,并运用高级语言VC++编程从DXF文件中提取出各三次样条曲线的起始端点切向、终止端点切向、型值点数及相应型值点坐标。同时,提出了三次参数样条曲线的生成原理,并应用该原理VC++编程实现了三次参数样条曲线的绘制。从曲线生成原理及最后结果可以看出,该方法有效地解决了三次样条曲线的参数化绘制,准确地再现了真实的图形。

[1]张彩明.高精度三次参数样条曲线的构造[J].计算机学报,2002,25(3):262-268.

[2]魏海涛.计算机图形学[M].北京:电子工业出版社,2001.

[3]MISCHAEL S, Floater.On the deviation of a parametric cubic spline interpolant from its date polygon[J].Computer Aided Geometric Design, 2008,25:148-156.

[4]谈勇,王治森,闫晓婧.基于累加弦长的三次参数样条曲线的插补控制[J].合肥工业大学学报(自然科学版),2004,27(6):619-622.

[5]苏步青.关于三次参数样条曲线的一些注记[J].应用数学学报,1976(1):49-58.

[6]KJELLANDER JA P.Smoothingofcubicparametric splines[J].Compute Aided Des, 1983,15:175-179.

[7]YE J, QU R.Fairing of parametric cubic splines[J].Mathematical and Computer Modeling, 1999,30:121-131.

[8]章虎冬,蒋大为.三次参数样条曲线的自动光顺算法[J].陕西邮电学院学报,2006,11(3)116-118.

[9]MANSOUR N, MOHAMMAD J, DREES I.Cost estimation of structural skeleton using an interactive automation algorithm: A conceptual approach[J].Automation in Construction, 2007,16:797-805.

[10]HAO J P, YU Y L, XUE Q.A maintainability analysis visualization system and its development under the Auto-CAD environment[J].Journal of Materials Processing Technology, 2002,129:277-282.

[11]余代俊,耿留勇.三次参数样条曲线在等高线矢量化中的化中的应用[J].测绘与空间地球信息,2007,60(6):153-155.

[12]关治.数值分析[M].北京:清华大学出版社,2006.

猜你喜欢

弦长样条端点
一元五次B样条拟插值研究
非特征端点条件下PM函数的迭代根
浅谈圆锥曲线三类弦长问题
不等式求解过程中端点的确定
弦长积分的极限性质与不等式
三次参数样条在机床高速高精加工中的应用
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
基于样条函数的高精度电子秤设计
基丁能虽匹配延拓法LMD端点效应处理