六边形算法简介
基于浓度梯度的六边形化学源追踪算法是Russell在2003年提出了。该追踪算法的主要思路如下:
While(循环停止条件){
If(
Then 在n点处逆时针旋转60°,前进固定步长m;
Else
在n点处顺时针旋转60°,前进固定步长m;
End if
}
其中,为在第n个点处所测化学物质的浓度,m是算法设定的步长。
如下图5.1所示,当,即B点浓度高于A点,且在n-1处是顺时针旋转时,那么在第n点(C点)处,将逆时针旋转60°,即在C点处的方向为垂直向上,偏向了浓度高的区域,符合期望;当,即A点浓度高于B点,且在n-1处是逆时针旋转时,那么在第n点(D点)处,将逆时针旋转60°,即从D点到E点,路径为:A-B-D-E,偏向了浓度高的区域,符合期望。
图5.1 六边形追踪算法
六边形算法流程图
将基于浓度梯度的六边形溯源追踪算法的实现主要包括两大部分:测量值传回电脑、下一点方向及相对位移的确定。算法流程图如下:图5.2 六边形溯源算法流程图
5.3 第n点处的方向及相对位移
在第n个点处测量好电导率并传回电脑的监控软件后,根据第n-2点与n-1点处的浓度大小和第n-1点处的旋转方向,确定第n+1个点的位置。
在编程时,需要知道n-1点和n点的坐标,计算出这两个点所构成线段的斜率,再根据方向策略确定n点和n+1点所构成线段的斜率,由固定步长计算得到在第n点处的相对位移。根据斜率可分为特殊情况和一般情况。
5.3.1 特殊情况
确定第n点方向及相对位移,特殊情况包括斜率为无穷大和斜率为0这两大类,又进一步分为下图中的四种情况:
对应的n+1点分别如下:
变量设置如下表: