非均匀有理B样条(NURBS样条)是复杂曲线、曲面造型中使用最广泛的一种曲线,也是CAD设计过程的重要工具,目前,国际社会已将非均匀有理B样条(NURBS样条)认定为工业产品外型设计的主要数学方法。非均匀有理B样条(NURBS样条)能够充分表达多次曲线、弧线、直线,因此,在飞机、舰船等复杂曲面的设计中发挥着重要的作用,将非均匀有理B样条(NURBS样条)应用于舰船曲面设计也成为一项热点研究[1]。
1 NURBS样条曲线的基本研究非均匀有理B样条(NURBS样条)由B样条推广而来,具有局部性、灵活性、自由曲面表达清晰等优点,在CAD产品设计中发挥重要作用。
首先定义B样条曲线:
定义节点矢量
$ \left\{ {\begin{array}{*{20}{l}} {{{{N}}_{i,0}}({{t}}) = \left\{ {\begin{array}{*{20}{l}} {1,{{{t}}_i} \leqslant {{t}} < {{{t}}_{i + 1}}},\\ {0,{\rm{else}}} \end{array}} \right.} \\ {{{{N}}_{i,p}}({{t}}) = \dfrac{{{{t}} - {{{t}}_i}}}{{{{{t}}_{i + p}} - {{{t}}_i}}}{{{N}}_{i,p - 1}}({{t}}) + \dfrac{{{{{t}}_{i + p + 1}}}}{{{{{t}}_{{{i}} + 1}}}}{{{N}}_{i + 1,p - 1}}(t)}。\end{array}} \right. $ |
非均匀有理B样条(NURBS样条)的曲线方程可改写为:
$ \begin{split} & p(u) = \sum\limits_{i = 0}^n {{d_i}} {R_{i,p}}(u) ,\\ &{R_{i,p}}(u) = \frac{{{\omega _i}{N_{i,p}}(u)}}{{\displaystyle\sum\limits_{j = 0}^n {{\omega _i}} {N_{i,p}}(u)}} 。\end{split} $ |
式中:p为NURBS样条的幂次;
NURBS样条具有以下特性:
1)递推特性
$ {{\text{N}}_{i,p}}({{t}}) = F\left( {{{{N}}_{{\text{i}},p - 1}}({{t}})} \right) ,$ |
2)归一性
$ \sum\limits_{i = 0}^n {{N_{i,p}}} (t) = 1 ,$ |
3)局部区间支撑性[2]
$ {N_{t,p}}(t)\left\{ {\begin{array}{*{20}{l}} { \geqslant 0},&{t \in \left[ {{t_i},{t_{i + p + 1}}} \right]},\\ = 0,&{\rm{else}},\end{array}} \right. $ |
4)非负性
$ {N_{t,p}}(t) \geqslant 0 。$ |
NURBS样条的节点及拟合实例如图1所示。
本文基于NURBS样条进行船体曲面光顺研究时,采用的船舶设计对象为1 500 DWT载油船,该船体曲面无法直接用单一的曲面片来拟合,需要根据船体曲面的特点进行划分,将需要进行光顺处理的船体曲面划分为首部、中体、尾部和底部等部分。船体曲面光顺流程如下:
1)建立初始船舶模型,获取初始型线
定义初始船体型线的节点为:
$ {V_{i,j}}\left( {i = 0,1,\cdots,m;j = 0,1,\cdots,n} \right) ,$ |
2)建立型线的节点方向矢量
$ \begin{gathered} F = \{ \underbrace {0,{t_{p + 1}}, \cdots ,{t_n},1}_{p + 1}\} ,\hfill \\ K = \{ \underbrace {0,{w_{q + 1}}, \cdots ,{w_n},1}_{q + 1}\} 。\hfill \\ \end{gathered} $ |
3)建立光顺曲面:
$ S(F,K) = \sum\limits_{i = 0}^n {\sum\limits_{j = 0}^n {{N_{i,p}}(F)} } {N_{j,p}}(K){V_{i,j}} 。$ |
式中
4)光顺曲面质量检测
采用的光顺曲面质量检测方法为高光线检测法,该方面最早由Beier提出,将光源简化为一条直线,设计其参数方程为:
$ q\left( t \right) = {q_0} + t{q_d},$ |
光源
$ d = \frac{{\left| {n\left( {F,K} \right) \cdot {q_d}} \right| \cdot \left( {{q_0} - S\left( {F,K} \right)} \right)}}{{\left\| {n\left( {F,K} \right) \cdot {q_d}} \right\|}}。$ |
基于NURBS样条的载油船光顺曲面示意图如图2所示。
OpenGL是由SGI公司开发的一种三维图像库开发平台,其特点是可以独立于操作系统和硬件环境,具有强大的图形处理和编辑功能,目前被广泛应用于计算机视觉、工业产品的实体造型、CAD等领域。尤其是在交互式三维图形建模方面,OpenGL[3]相对比其他软件平台具有非常大的优势。因此,本文在开发船体型线和曲面光顺系统时,选用了OpenGL作为开发载体。
OpenGL开发平台包括客户应用程序、服务器和后处理单元,如图3所示。
OpenGL开发平台的关键特性包括:
1)过程性
OpenGL开发平台采用矩阵变换、方程系数迭代、像素更新、算法寻优等方式对二维和三维图像进行控制,强调的是变换过程[4],而不是一种描述性的软件接口。
2)执行模式
OpenGL开发平台的指令执行模式是面向客户和服务器的,客户根据图像处理的需求发布命令,命令进入OpenGL的服务器中进行解释和处理,然后反馈给用户结果。OpenGL的服务器可同时接收和维护许多OpenGL命令正文。
3)图元
OpenGL使用的图元包括点、线段和多边形等,通过不同图元的排列和组合,最终为用户提供丰富多样的二维、三维图像。
3.2 小波神经网络算法在船体设计过程中,图像处理的核心是将离散数据进行逆向处理,并将其转化为连续的曲线和连续的曲面。同时,构建曲线和曲面的过程也是一个噪声过滤和拟合的过程。在开发基于OpenGL的船体设计平台时,充分利用小波神经网络的快速寻优特性,实现离散数据的非线性逼近和收敛快速,最终实现了船体曲面的光顺处理。
小波神经网络算法的拓扑原理如图4所示。
小波神经网络的输入层为:
$ \left( {{x_1},{x_2},\cdots,{x_{n - 1}},{x_n}} \right) ,$ |
输出层为:
$ \left( {{W_1},{W_2},\cdots,{W_{n - 1}},{W_n}} \right) ,$ |
中间层为小波基函数
对于离散曲线
$ W(j,k) = \sum\limits_t {{2^{ - j/2}}} \psi \left( {{2^{ - j}}t - k} \right)f(t) ,$ |
其矢量形式为:
$ \vec W = \vec {\boldsymbol{F}} \cdot \vec {\boldsymbol{N}} ,$ |
其中,输入矩阵表示为:
$ \vec {\boldsymbol{F}} = \left[ {\begin{array}{*{20}{c}} {{x_1}(1)}&{{x_1}(2)}& \cdots &{{x_1}(t)} \\ {{x_2}(1)}&{{x_2}(2)}& \cdots &{{x_2}(t)} \\ \cdots & \cdots & \cdots & \cdots \\ {{x_p}(1)}&{{x_r}(2)}& \cdots &{{x_p}(t)} \end{array}} \right] ,$ |
小波基函数的变换矩阵为:
$ \vec {\boldsymbol{N}} = \left[ {\begin{array}{*{20}{c}} {{\psi _{0,1}}(1)}&{{\psi _{0,2}}(1)}& \cdots &{{\psi _{j,d}}(1)} \\ {{\psi _{1,1}}(2)}&{{\psi _{1,2}}(2)}& \cdots &{{\psi _{j + 1,d}}(2)} \\ \cdots & \cdots & \cdots & \cdots \\ {{\psi _{k,1}}(t)}&{{\psi _{k,2}}(t)}& \cdots &{{\psi _{k,d}}(t)} \end{array}} \right] 。$ |
其中,
结合小波神经网络算法在OpenGL中进行船体的曲面光顺设计,采用的船体轮廓曲线为1500 DWT载油船的船艏处轮廓线,将轮廓265个节点定义为小波神经网络算法的输入样本
$ \int\limits_R^{} {} {\left| {\frac{{x\left( \omega \right)}}{\omega }} \right|^2}{\rm{d}}\omega \leqslant \infty ,$ |
则输入信号的平移与伸缩变换如下式:
$ {x_s}\left( t \right) = \frac{1}{{\sqrt s }}x\left( {\frac{{t - \alpha }}{s}} \right) 。$ |
式中:s为伸缩因子;
定义小波神经网络的神经元个数为n=25,非均匀有理B样条(NURBS样条)函数的控制顶点与相邻的3个点存在线性相关,轮廓线节点的输入样本
$ W\left( {s,t} \right) = \left\{ {f\left( t \right),x\left( t \right)} \right\} = \frac{1}{{\sqrt s }}\int\limits_{}^{} {f\left( t \right)} x\left( {\frac{{t - \alpha }}{s}} \right){\rm{d}}t 。$ |
定义船体轮廓线的分辨率为m,轮廓线的逼近形式为:
$ {W_l}\left( t \right) = \sum\limits_{m = 1}^N {{x_{m,k}}} \cdot {\phi _{m,i}}(t) 。$ |
其中,
图5为基于小波神经网络算法的轮廓线光顺处理示意图。
为了对比基于NURBS曲线的船体优化设计效果,采用Matlab仿真试验平台[6],对优化前后的1 500 DWT载油船阻力特性进行对比仿真。
建立1 500 DWT载油船的表面方程为:
$ \frac{Y}{B} = 0.1\left( {1 - {X^2}} \right) \times \left( {1 - 64{Z^2}} \right)。$ |
式中:Y ,B,Z分别为宽度、长度和吃水深度,船体表面的流体连续性方程如下式:
$ \left[ {\frac{{\partial \left( {{\rho _0}u} \right)}}{{\partial x}} + \frac{{\partial \left( {{\rho _0}v} \right)}}{{\partial y}} + \frac{{\partial \left( {{\rho _0}\omega } \right)}}{{\partial z}}} \right]{\rm{d}}x{\rm{d}}y{\rm{d}}z = - \frac{{\partial {\rho _0}}}{{\partial t}}\left( {{\rm{d}}x{\rm{d}}y{\rm{d}}z} \right) 。$ |
其中:
在Matlab中建立船舶的动量方程为:
$ \frac{{\partial \left( {{\rho _0}u} \right)}}{{\partial x}} + \frac{{\partial \left( {\rho v} \right)}}{{\partial {y_{}}}} = \frac{\partial }{{\partial t}}\left[ {\mu \left( {\frac{{\partial u}}{{\partial x}} + \frac{{\partial v}}{{\partial y}}} \right)} \right] + {F_i}。$ |
其中:
图6为Matlab中载油船船体曲面优化前后的阻力特性曲线。
[1] |
陆丛红, 林焰, 纪卓尚, 等. 基于NURBS表达的主船体虚拟分舱及舱容计算[J]. 船舶力学, 2007, 11(3): 9. |
[2] |
王明炎, 贾传荧. 船体非均匀有理B样条曲面造型与OpenGL显示[J]. 大连海事大学学报, 2005, 31(1): 3. |
[3] |
张彦儒, 林焰, 陆丛红, 等. NURBS流曲线造型新方法及其在船舶设计中应用[J]. 大连理工大学学报, 2017, 57(6): 7. |
[4] |
王志桐, 王直, 汤芳丽. 船体外板曲线曲面拟合研究[J]. 现代电子技术, 2013(22): 28-30. |
[5] |
王川, 赵成璧, 唐友宏, 等. 一种改进的NURBS曲面和隐式曲面求交算法及在船体曲面求交中的应用[J]. 中国造船, 2013, 54(3): 7. |
[6] |
张明霞, 纪卓尚, 林焰. 面向计算的船体曲面NURBS造型[J]. 船舶工程, 2001(6): 7. |