kaiyun官方注册
您所在的位置: 首页> EDA与制造> 设计应用> 基于Visual Fortran和AutoCAD的Bezier曲线的自动绘制及应用
基于Visual Fortran和AutoCAD的Bezier曲线的自动绘制及应用
来源:微型机与应用2010年第18期
杨 帆1, 汤方平2
(1. 扬州大学 水利科学与工程学院, 江苏 扬州 225009; 2. 扬州大学 能源与动力工程学
摘要:以Fortran90语言和AutoCAD图形软件为平台,开发了Bezier曲线绘制子程序,该程序能够保存、处理数据文件,形成直观曲线供用户输出,实现了计算机自动绘图的目的。基于该子程序编制了部分应用主程序体现出自动绘图子程序的应用价值。
Abstract:
Key words :

摘 要:以Fortran90语言和AutoCAD图形软件为平台,开发了Bezier曲线绘制子程序,该程序能够保存、处理数据文件,形成直观曲线供用户输出,实现了计算机自动绘图的目的。基于该子程序编制了部分应用主程序体现出自动绘图子程序的应用价值。
关键词:Bezier曲线;自动绘制; 应用

1 Bezier曲线及其原理
20世纪60年代,法国雷诺汽车公司的工程师贝济尔提出了用控制多边形定义曲线的方法,即Bezier曲线,因该曲线采用了一组独特的多项式基函数,使其具有许多优良的特性,在诸多形式的参数多项式曲线中独树一帜,一经问世,就受到工业界和计算机辅助几何设计研究者的广泛重视[1]。Bezier曲线算法是一种直观、易于调整、高效率的曲线拟合方法,这种方法能使使用者在工程设计中比较直观地意识到所给条件与设计出的曲线之间的关系,能方便地控制输入控制点以改变曲线的形状。Bezier曲线的形状由点的位置确定,而且曲线可能并不通过除两端点外的所有给定点,点数量不够或点位置难以处理的情况下,用三次样条曲线方法也许不能生产光滑曲线。
Bezier曲线有不同的数学定义形式,如德卡斯特里奥递归(deCasteljau)算法、波恩斯坦基(Bernstein)原理等。本文中Bezier曲线的自动绘制方法采用Bernstein原理和参考文献[2]提出的将中点分割和拐点分割相混合的Bezier曲线降阶方法,其中Bezier曲线的数学基础(影响曲线形状的加权系数)来自下式给出的Bernstein原理[1]:

2 软件的接口及编程
 Fortran语言具有强大的数学计算功能,AutoCAD具有强大的图形绘制和编辑功能, 两种软件均是许多行业的工程技术人员所必备的工具,但集成两种软件的优势,将两者有机地结合起来却并非易事。目前,Fortran语言与AutoCAD软件间数据通信方式主要有下面两种[3-4]:
(1)将Fortran的计算结果输出为DXF格式,利用AutoCAD将其打开即可看到计算的结果图像。DXF(Autodesk Drawing Exchange Format)是AutoCAD中的矢量文件格式,它以ASCⅡ码方式存储文件,在表现图形的大小方面十分精确。
(2) 通过VB实现Fortran与AutoCAD之间的数据通信,VB是通过AutoCAD ActiveX Automation接口来建立与AutoCAD对象之间的联系。
本文采用第一种方法,对AutoCAD软件常用的基本绘图命令利用Fortran语言编写相应的接口子程序,即建立Fortran与AutoCAD间的接口软件。通过Fortran语言编程直接读取离散控制点数据,通过对离散控制点进行曲线拟合,最后生成AutoCAD支持的DXF文件,最终利用编程生成的模型在AutoCAD环境下显示,使其具有工程技术人员熟悉的友好用户界面,并且具有人机交互的功能。下面仅给出了部分程序的清单。
绘制多段线的程序:
SUBROUTINEPLINE(X,Y,K,LY)
CHARACTER*(*)LY
DIMENSION(X(K),Y(K))
NA=0
WRITE(3,200)NA
WRITE(3,600)’POLYLINE’
NA=8
WRITE(3,200) NA
WRITE(3,600) LY
NA=66
WRITE(3,600) LY
WRITE(3,600) LY
NA=70
WRITE(3,200) NA
WRITE(3,600) LY
DO I=1,K
NA=0
WRITE(3,200) NA
WRITE(3,600)’VERTEX’
NA=8
WRITE(3,200) NA
WRITE(3,600) LY
NA=10
WRITE(3,200) NA
WRITE(3,210) Y(I)
CONTINUE
NA=0
WRITE(3,200) NA
WRITE(3,600)‘SEQEND’
NA=8
WRITE(3,200) NA
WRITE(3,600) LY
FORMAT(I3)
FORMAT(F12.6)
FORMAT(A)
RETURN
END
计算影响曲线形状的加权系数的程序:
allocate(j(k+1,n))
m=n-1
t=1.0/k
call factorial(m,a)
do i=0,1,t
q=q+1
do w=0,m
call factorial(w,b)
!求阶乘的子程序
c=m-w
call factorial(c,d)
call power(i,w,e)
!求幂次的子程序
f=1.0-i
call power(f,c,g)
j(q,w+1)=a/(b*d)*e*g
end do
end do
3 实例应用
本文基于Bezier曲线自动绘制程序,在实例3.2与实例3.3中添加了部分程序,体现Bezier曲线自动绘制程序的价值所在。
3.1 翼型曲线的自动绘制
利用所编程序来绘制翼型的外形曲线,表1为某翼型控制点数据,由数据分析可知该翼型为对称翼型,通过自编程序,实现其自动绘制,并闭合曲线,绘制后的曲线如图1所示。若图形不够理想,还可以改变控制点的参数来重新绘图调整图形。

3.2 泵性能曲线的绘制
泵段及泵装置在试验结束后便需要进行性能曲线的绘制,而传统的手工曲线绘制方法速度比较慢,且无法保证精度要求,目前,泵性能曲线的绘制多基于VB、VC软件基础来开发。本文基于自行编制的Bezier曲线绘制程序来达到性能曲线自动绘制的目的,曲线更加光滑平顺、便于控制,能满足水泵汽蚀和效率的不同要求。通过该程序给出了某泵装置的流量-扬程(Q-H)曲线(如图2所示)、流量-效率(Q-η)曲线(如图3所示),其余的特性曲线均可采用本程序进行绘制。该程序不仅适用于水泵复杂特性曲线的拟合,对其他如风机、水轮机等动力机械的特性曲线拟合也会有较好的效果。

3.3 流场计算分析
以立柱绕流的流场计算为例,在该程序的基础上编写有限元分析主体程序。在曲线自动绘制基础上,利用有限元法生成了立柱绕流的部分流场图。生成好的DXF格式的模型图,可以在任何版本的AutoCAD环境下打开观察,具有良好的直观性。图4给出了部分流场的流速矢量图。

基于AutoCAD平台,利用Fortran语言编程,实现了Bezier曲线的自动绘制,让用户直观地感受Bezier曲线优良的几何特性。该程序具有良好的通用性,本文立足于该程序在翼型绘制、泵性能曲线绘制、有限元分析方面的应用。通过本程序的开发对Bezier曲线的数学表达和几何意义有了深刻的理解和直观的认识,也对Fortran90和AutoCAD间的链接及编程机制、图形处理功能建立了初步的认识。以该程序为基础,可进一步编写与自己专业相关的专用接口子程序。
参考文献
[1] 孙家广,杨长贵.计算机图形学(第二版)[M].北京:清华大学出版社,1995.
[2] 许凯,赵新明.基于拐点分割的Bezier曲线降阶[J].上海交通大学学报,2007,41(8):1223-1226.
[3] 费璟昊,李俊杰,齐同军.Fortran与AutoCAD间数据通信的几种方法[J].电脑编程技巧与维护,2001(6):41- 42,45.
[4] 汤方平.Fortran语言生成DXF图形交换文件通用子程序设计[J].微型计算机,1995,15(6):57-58.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map