vb编程论坛51
计算技术
与信息发展
1  引言
对船体曲面进行B 样条曲面表达时,往往需要进行大量的插值计算以及对曲面进行实时、直观的三维图形化显示。通常采用的方式有两种:一种方法是用VC++或VB 等软件直接进行绘图,这种方法需要编写大量的绘图程序模块,想要达到较好的图形显示效果较难。另一种是用VC++与OpenGL 结合的方式对图形进行直观显示,这种方法需要研究者较高的编程能力,占用较多的科研时间和精力。而基于COM 控件的VB 与Matlab 的混合编程能集成VB 和Matlab 各自的优点,把计算过程和数据图形显示功能留给Matlab 完成,并对计算结果进行分析和可视化处理,将极大地提高程序的开发效率,从而很好的解决了这一问题。2  COM 组件的创建
COM 组件技术是利用Matlab 的COM Build 工具将M 函数文件转换成COM 组件,COM 组件可用于任何支持组件技术的高级语言中,并可以生成不依赖于Matlab 环境的独立应用程序,可获得最快的运行速度。
(1)设置Matlab 环境,并编写函数形式的M 文件。创建COM 组件之前需要Matlab 所列出的编译器中进行选择,从而对Matlab Compiler 进行配置。Matlab 文件中只有函数文件能够编译成COM 组件,函数文件的文件名必须和函数名一致。
(2)创建COM 组件
Matlab 工作环境中执行comtool ,打开COM 生成器。选择File/New Project ,在出现的COM 组件设置窗口中输入组件名和类型名。若在其中调用了Matlab 绘图指令,在编译器选项中必须选中使用句柄图形库。
(3)在VB 编程环境中载人COM 组件,并调用接口函数即可实现功能。
3  在三维船体曲面显示上的应用
船舶是一种极为复杂的大型水上建筑物,各种船体的外表面大都是由复杂的不可展空间曲面构成,在进行工程计算
时需要在计算机里进行复杂曲面的数学表达。本文利用非均匀B 样条原理对离散数据进行复杂船体外板曲面进行拟合。
在设置好编辑器后,在Matlab COM Builder 界面,把其创建成COM 控件,组件名和类型名为aa 和aadate ,由于调用了Matlab 绘图指令,则需要Matlab 提供的C/C++图形库,这时在编译器选项中必须选中使用句柄图形库。
在VB 程序的设计阶段,需打开VB 中的Project/Reference 对话框,选中已经生成的aa 1.0 Type Library ,如图1所示。当单击显示按钮后将出现如图2所示的结果,三维图形可以进行旋转、放大等功能。
图1. 引用com 控件                      图2. 显示结果4  结语
本文利用Visual Basic 开发了船体B 样条曲面表达的计算模块,在图形化显示部分则利用Matlab 的绘图函数来完成,在脱离Matlab 环境的情况下进行船体板曲面的图形化显示,三维图形显示效果逼真。基于COM 控件的混合编程充分发挥VB 和MATLAB 各自的优点,降低了开发难度,便于程序的移植,缩短了开发周期,在科研过程中有着较高的实际的意义。
参考文献:
[1] 赵学强,孙伟伟.基于COM 的MATLAB 混合编程在图像
处理中的应用 [J]. 电脑知识与技术,2007(19):229-230.[2] 岳玉芳,尤忠生,张玉双.基于COM 的VB 与MATLAB 混
合编程 [J].计算机工程与设计,2005(1):61-65.
[3] 刘玉君,朱秀莉. 复杂船体外板曲面拟合研究 [J].大连理
工大学学报, 2005(3):226-229.
VB与MATLAB混合编程在三维船体曲面显示中的应用
□  周  伟  纪卓尚  张雪彪
(大连理工大学船舶工程学院  辽宁·大连  116024)
摘  要:Matlab 具有强大的计算绘图能力但其可移植性和通用性比较差,VB 语言绘图能力差,但具有图形用户界面方面的开发优势。而COM 组件将两者很好的集合在一起,集成后不仅能够充分发挥两种
语言各自的优点,还可以完全脱离MA TLAB 的运行环境。通过一个三维船舶曲面拟合显示的例子说明此方法简单,方便,可操作性强。关键词:VB ;Matlab ;COM 组件;船体曲面显示
中图分类号:TP39                                    文献标识码:A                              文章编号:1007-3973(2009)10-051-01