APP下载

基于NURBS曲面数据的船体体积计算方法的研究

2012-06-29周燕芳

城市勘测 2012年4期
关键词:交线剖分三棱锥

周燕芳

(广州市城市规划勘测设计研究院,广东广州 510060)

1 引言

船体是复杂的不规则体,传统的计算实体船体体积方法是先建立数学模型,再测出特征点、关键点后进行拟合。拟合后将船体沿三个互相垂直的方向切片,这样三维复杂几何体的几何特性计算就转化为一系列平面的几何特性计算[1]。此方法与现代化的性能分析计算自动化、智能化、高精度的趋势不相适应。

本文提出并设计了基于 NURBS[2](Non-Uniform Rational B-Spline,非均匀有理B样条)的船体体积计算程序,能直接在三维空间下计算船体的体积。对已建造好的船体,利用三维激光扫描技术得到船体表面大量激光点云数据。经过点云数据的预处理和分析,重构NURBS曲面来拟合表达船体表面,最终得到用来描述三维船体的互相衔接的 NURBS曲面数据。NURBS曲面数据可进行规则化格网输出,根据曲面的特性输出不同间隔的规则化格网。

基于NURBS曲面数据的船体体积计算程序关键算法有:

①船体NURBS曲面数据的三角剖分算法;

②船体曲面交线三角形的计算;

③船体曲面与任意高度的求交算法;

④封闭三维曲面体的体积计算。

2 ObjectARX简介

AutoCAD具有强大的图形交互功能,并且支持多种方式的二次开发。ObjectARX以C++为编程语言,采用先进的面向对象的编程原理,提供可与Auto-CAD直接交互的开发环境。同时包括一组动态链接库(DLL),库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问Auto-CAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能[3]。基于ObjectARX进行程序开发,可以让用户有更加直观的了解。

3 基于NURBS曲面数据的船体体积计算程序实现

3.1 程序开发环境

以Visual Studio.net 2005为编程环境,ObjectARX 2008为开发工具,程序采用非模态对话框方式,方便用户进行图形交互。对话框界面尽量做到界面简洁、直观,如图1所示。

图1 程序界面

3.2 基于NURBS曲面数据的三角剖分算法

曲面三角网格生成算法有很多,总的来说可以分为映射法和自动网格生成法两类[4]。映射法[5]是在参数域上利用平面网格生成技术进行剖分,然后将参数域上的网格结点映射到实空间,并保持参数域上网格结点的连接关系,从而得到曲面的三角剖分。由于船体曲面是基于NURBS的参数曲面描述,所以采用映射法比较合适。

图2 曲面数据的三角剖分

船体三维激光点云数据经过预处理后是按规则化格网输出的N×M的面片数据,对每个规则化格网单元采用三角剖分分为两个三角形。如图2所示的点(C0,R0),点(C1,R0),点(C0,R1)和点(C1,R1)构成的格 网 分 成 三 角 形 D(C0,R0)D(C1,R1)D(C1,R0)和 三 角 形D(C0,R0)D(C0,R1)D(C1,R1)。定义三角形结构体,记录三角形的3个顶点索引值,并计算三角形的法向量、重心坐标,用于判断三棱锥体积叠加时的正负。

3.3 船体曲面交线三角形的计算

给定计算水线高度hgt,在计算高度附近的三角形会被分割。找出三角形的最大Z值maxz,最小Z值minz,以及Z值等于hgt的顶点的个数ZEqNum。任意高度水线hgt与三角形之间的关系有如下几种情况(如图3):

①hgt≤minz,不参与体积计算;

②hgt==maxz且ZEqNum==2,不参与体积计算,将此三角形作为交线三角形;

③hgt>maxz或者hgt==maxz且 ZEqNum==1,参与体积计算;

④minz<hgt<maxz,且三角形中只有一个点的Z值小于hgt,此三角形不参与体积计算,求出交线点坐标存储于交线三角形中;

⑤minz<hgt<maxz,且三角形中有两个点的坐标小于hgt,此三角形不参与体积计算,求出交线点坐标并将相交部分分割为两个三角形作为交线三角形;

⑥ZEqNum==3,不参与体积计算。

图3 任意高度水线与三角形的位置关系

3.4 船体曲面与任意高度的求交算法

在3.3节所求的交线三角形中,将两个点的Z值均等于hgt的线段提取出来。根据线段的空间位置关系(两线段首尾点的距离理论上为0,对个别曲面有交错的情况可放宽连接条件)将所有线段连接成首尾相接的闭合曲线。然后利用CAD中多义线的getArea函数即可获得闭合曲线所围成的面积。对于如图4所示的一闭合曲线包含于另一闭合曲线的特殊情况,被包含闭合曲线的面积应为负,包含闭合曲线的面积为正,任意两个多边形的关系可采用文献[6]所述方法进行判断。

图4 多边形位置关系

3.5 封闭三维曲面体的体积计算

当确保所有三角形的法向量均朝外后,选择任意的起算点(坐标原点或封闭区域的重心点等)与三角形构成三棱锥,船体的体积可以分为三部分计算:①位于交线下面的完整的三角形与起算点所构成的三棱锥的体积;②交线三角形与起算点所构成的三棱锥的体积;③交线所围成的不规则闭合曲面与起算点所构成的不规则体的体积。计算时均需考虑三角形法向量与所选计算起点和三角形重心所构成的向量之间的方向余弦(图5):若方向余弦为正,则三棱锥体积为正;若方向余弦为负,则三棱锥体积为负。

图5 三角形方向余弦

4 应用实例

用三维激光扫描的方法对某一封闭舱室进行扫描并得到其NURBS曲面数据,对其进行三角剖分如图6所示。三角形所有法向量均朝外,不需要进行修改。程序所算体积与传统方法所算的体积如表1所示。由于扫描时舱室存在晃动,用NURBS曲线拟合出来的船体下部存在凹凸不平,因此底部计算的体积的相对误差较其他高度大。但总的看来,两者的差别不大,在允许误差范围之内。

图6 舱室三角剖分网图

计算体积比较 表1

5 结语

本文设计并实现了基于NURBS曲面数据的船体体积的计算程序,实现了船体体积计算的自动化与智能化。与传统的先建立数学模型,再测出特征点、关键点后进行拟合计算的单点测量方法相比,在效率和技术上得到了更好的改进,提高了计量的准确性和可靠性,实现了几何测量法体积计算的从低精度向高精度的发展。

[1]秦敬松.基于激光扫描点云数据的船体体积计算方法研究[D].武汉:武汉大学,2008.

[2]施法中.计算机辅助几何设计与非均匀有理 B样条[M].北京:高等教育出版社,2001:46~49.

[3]俞晓,苗放.基于ObjectARX的AutoCAD二维图形可控精度外包多边形的算法实现[J].成都理工大学学报,2008(10):559~562.

[4]徐松,王剑英.曲面的自适应三角网格剖分[J].计算机辅助设计与图形学学报,2000,12(4):267~271.

[5]王小娜.基于映射法的散乱点三角网格划分与拼接算法研究[D].秦皇岛:燕山大学大学,2009.

[6]张全伙,曾晓帆,范慧琳等.任意两个多边形的求交算法[J].华侨大学学报,1995(1):111~115.

猜你喜欢

交线剖分三棱锥
球面与简单多面体表面交线问题探究
基于重心剖分的间断有限体积元方法
平面体截交线边数和顶点数的计算模型研究
三棱锥中的一个不等式
二元样条函数空间的维数研究进展
一种实时的三角剖分算法
复杂地电模型的非结构多重网格剖分算法
柱锥面交线研究
例谈三棱锥的一个简单性质的应用
促进数学思维训练的好题