
本人仅收藏整理
如有错误
还请自己查证!
IDL中样条曲线的导入和导出
摘 要:通过介绍IDL语言和样条曲线
引出在该语言中导入和导出的必要性
并付之实现
最后就在实现过程中出现的具体问题进行了展望
关键词:IDL;样条曲线;导入;导出
1 概述
IDL(Interactive Data Language)语言是一种数据分析和图像化应用程序及编程语言
IDL通过一种中立的方式来描述接口
使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流
IDL最初在七十年代后期用于帮助科学家分析火星探险卫星发回的数据
将浩瀚的数据转换为图形
从此后
IDL 得到广泛运用
使用者日众
呈几何级别增长
IDL 使用者可以迅速且方便地运用此软件将数据转换为图像
促进分析和理解
通过软件转化的图像既可以是简单色彩
也可以是全色三维图像和模型
目前在预测海洋及大气变化的建模(瑞士气象协会选择IDL作为"通用"开发环境)、交互式的可视化环境(Zurich的GIS实验室)、监测海冰协助船只安全行使(由英国国家空间中心( BNSC)资助
由地球资源科学有限公司建立的海冰工作站)等方面IDL得到广泛的应用
下面来介绍一下样条曲线
样条曲线是经过一系列给定点而形成的光滑曲线
最初
样条曲线都是借助于物理样条得到的
放样员把富有弹性的细木条(或有机玻璃条)
用压铁固定在曲线应该通过的给定型值点处
样条做自然弯曲所绘制出来的曲线就是样条曲线
样条曲线不仅通过各有序型值点
并且在各型值点处的一阶和二阶导数连续
也即该曲线具有连续的、曲率变化均匀的特点
非均匀有理 B 样条曲线(NURBS)
是一种用途广泛的样条曲线
它不仅能够用于描述自由曲线和曲面
而且还提供了包括能精确表达圆锥曲线曲面在内各种几何体的统一表达式
自1983年
SDRC公司成功地将NURBS模型应用在它的实体造型软件中
NURBS已经成为计算机辅助设计及计算机辅助制造的几何造型基础
得到了广泛应用
正是由于样条曲线的这些性质
所以在一些项目中就有必要将之导入和导出(注:这里的样条曲线主要指的是非均匀有理 B 样条曲线)
目前在样条曲线的导入和导出方面基本可以实现光滑需要
但是在精确方面还有待改善
本论文的方法很好的解决了这个方面的缺陷
下面就在IDL语言中如何导入和导出样条曲线做详细的说明
2 IDL中样条曲线的导入
熟悉dxf文件格式的朋友都知道
dxf文件以段的形式来存储文件信息
如果希望能完整并且准确的将dxf格式文件中的所有信息
都读取并显示出来
这是不大切合实际的
除非系统本身就是有着和cad非常近似的功能取向和应用需求
所以
正常情况下
我们只会根据我们开发的需求将文件中最主要的一些信息
如几何实体
层
块嵌套等读取出来
然后利用idl自己的图形体系将信息显示表达出来
一般的
用idl来读取显示dxf格式文件
主要有以下三条途径:
1.用idl调用其他语言现成的函数获取需要的文件信息
2.用idl的read方法将整个文件读入
然后根据dxf公布的文件结构
按行和字段标记依次读取文件中包含的各种图形信息
3.用idl中的idlffdxf类
可以读取其中的绝大部分实体信息
在这里我们主要采用第2和3两种方式相结合的方式读取DXF的相关信息
如样条曲线类型为17等
实现过程简要的概述如下:
oDXF = OBJ_NEW('IDLffDXF');创建的DXF格式的对象
T=oDXF->Read(filename) ;读取文件名
IF T EQ 1 THEN BEGIN
dxfTypes = oDXF->GetContents(COUNT=typeCounts) ;获取DXF类型
if dxfTypes eq 17 then begin
......实现读取DXF的代码操作
endif
ENDIF
我们知道样条曲线它有拟合点、控制点、阶数、允差、颜色、线型等组成
在读取它的信息的时候这些都是要读取的
读取的方法为:
Temp=''
openr,fp,file,/get_lun ;file=路径+文件名
readf,fp,Temp
按照这种方式这样一直读下去
并根据所需要的的值的属性来获取相关信息
比如说要得到拟合点的坐标值
我们知道DXF在出现70(X值)之后一般就是了
所以就判断是否有70(X值)
如果有
看后面是否有71(Y值)、72(Z值)
如果仅有70还不一定就是拟合点的坐标X值
一般情况下
我们只需要通过拟合点来绘制
需要特别说明的是在读取了样条曲线的属性信息后
获取的拟合点数据通过3次B样条曲线的算法实现在IDL中重绘
并将相应的属性值
如线宽
颜色等赋给该曲线
实现的方式如下:
Obj->setproperty,color=color
thick=b ,style=a ;color为曲线的颜色
a为线型,b为宽度
具体的实现效果如图1-1所示:
图1 样条曲线的导入效果图
3 IDL中样条曲线的导出
当然样条曲线的导出要非常的简单
具体的实现可以根据IDL的文件接口对象IDLffDXF
可将IDL内部数据导出为.dxf格式文件
大致的方法为:
oDXF = OBJ_NEW('IDLffDXF')
line = {IDL_DXF_POLYLINE}
line.dxf_type = 7
line.layer=layername
line.extrusion=[0.0,0.0,1.0]
currobj->getproperty,thick=temp
line.thickness=temp
currobj->getproperty,data=temp
n=(size(temp))[2]
line.vertices=ptr_new(temp)
currobj->getproperty,polylines=temp
nt=n_elements(temp)
currobj->getproperty,color=cl
icol=op->nearestcolor(cl[0],cl[1],cl[2])
line.color=icol
oDXF->putentity,line
ptr_free,line.vertices
ptr_free,line.connectivity
当然
在此之前还要按照DXF的文件结构进行参数化
具体的实现效果如图1-2所示:
图2 样条曲线的导出效果图
4 展望
目前尽管实现了该功能
但是在函数拟合的时候
如果拟合点控制的不好的话效果不是很理想
比如说如果该曲线的点太多
而添加的点太多则比较慢
如果曲线的点少
而添加的点太少
则曲线的效果不是很好
变成了折线等等
这些都是需要考虑的
拟合点的选取将是我们需要考虑的重点和难点
参考文献:
[1]韩培友.IDL可视化分析与应用.北京:西北工业大学出版社,2006.
[2]Martin Gudgin.宋亚男译.IDL 精髓.北京:中国电力出版社,2002.
[3]闫殿武.IDL可视化工具入门与提高.北京:机械工业出版社,2003.
[4]苏金明.用Visual Basic开发交互式CAD系统.北京:电子工业出版社,2003
The Spline curve in IDL of the import and export
Abstract: By introducing the Interactive Data language and spline curve, The rise in the language of the need for import and export, And the achievement of pay, Finally, in the process of the realization of the specific issues outlook.
Key words:Interactive Data Language;Spline curve;Import; Export
作者简介:闾松林(1982-)
男
湖南临湘人
岳阳职业技术学院助教
研究方向:数据库技术
联系电话:135******** 0730-*******
1
