六边形算法简介

基于浓度梯度的六边形化学源追踪算法是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点分别如下:

5.3.2 一般情况

当第n-1和n点构成的线段斜率存在且不为0时,为一般情况。根据第n-1点和第n点的相对位置,可分为下图中的四种情况:

变量设置如下表:


六边形溯源追踪算法编程思想与代码相关推荐

  1. (王道408考研数据结构)第六章图-第四节5:最短路径之弗洛伊德算法(思想、代码、演示、答题规范)

    文章目录 一:动态规划基本思想 二:弗洛伊德(Floyd)算法基本思想 三:弗洛伊德(Floyd)算法代码实现 四:弗洛伊德(Floyd)算法代码视频演示 五:弗洛伊德(Floyd)算法代码答题规范 ...

  2. (王道408考研数据结构)第六章图-第四节4:最短路径之迪杰斯特拉算法(思想、代码、演示、答题规范)

    文章目录 一:BFS算法局限性 二:迪杰斯特拉(dijkstra)算法基本思想 三:迪杰斯特拉(dijkstra)算法代码实现 四:迪杰斯特拉(dijkstra)算法代码视频演示 五:迪杰斯特拉(di ...

  3. (王道408考研数据结构)第六章图-第四节3:最短路径之BFS算法(思想、代码、演示、答题规范)

    文章目录 一:BFS算法基本思想 二:BFS算法代码 三:反思 最短路径shortestpath):主要有以下两类最短路径问题 单源最短路径问题:一个顶点到其他顶点最短路径 迪杰斯特拉算法(dijks ...

  4. (王道408考研数据结构)第六章图-第四节2:最小生成树之克鲁斯卡尔算法(思想、代码、演示、答题规范)

    文章目录 一:克鲁斯卡尔(Kruskal)算法思想 二:克鲁斯卡尔(Kruskal)算法代码实现 三:克鲁斯卡尔(Kruskal)算法视频演示 四:克鲁斯卡尔(Kruskal)算法动画演示 五:克鲁斯 ...

  5. (王道408考研数据结构)第六章图-第四节1:最小生成树之普利姆算法(思想、代码、演示、答题规范)

    文章目录 一:普利姆(Prim)算法算法思想 二:普利姆(Prim)算法注意点 三:普利姆(Prim)算法代码实现 四:普利姆(Prim)算法代码视频演示 五:普利姆(Prim)算法动画演示 六:普利 ...

  6. 十分钟搞懂基-2 FFT原理及编程思想

    0.写在最前 写本文的目的一是为了帮人理清FFT算法思路,二是有几个疑问(在5总结部分提到)希望得到解答.看懂本文的基础:至少听说过.简单了解过傅里叶变换.离散傅里叶变换(DFT).基于时间抽取的基2 ...

  7. Java编程思想之高内聚低耦合

    文章目录 1 前言 2 低耦合 2.1 耦合性定义 2.2 耦合性分类 2.3 使用低耦合 3 高内聚 3.1 高内聚定义 3.2 内聚性分类 4 示例 5 高内聚,低耦合的系统有什么好处呢 6 降低 ...

  8. Matlab编程思想和编程训练

    目录 一.随机游走问题. 二.指派授课问题 在老师的带领下学习Matlab的编程思想和代码,自己的思维能力还是有所欠缺.老师的代码简洁明了,看着也舒服许多(每题第二份代码为老师代码),跟着进度实时更新 ...

  9. 状态机编程思想:删除代码注释(支持C/C++和Java)

    前言 有时为了信息保密或是单纯阅读代码,我们需要删除注释. 之前考虑过正则表达式,但是感觉实现起来相当麻烦.而状态机可以把多种情况归为一类状态再行分解,大大简化问题.本文就是基于状态机实现的. 删除C ...

最新文章

  1. 使用Rancher管理Docker
  2. java信息格式化,Java如何格式化包含时间信息的消息?
  3. s:select 使用
  4. 思科——RIP的运用
  5. 简明python教程 --C++程序员的视角(七):异常
  6. java 带参数的构造函数_java – mockito模拟一个带参数的构造函数
  7. springboot scheduled多线程
  8. 计算机二级access什么时候报名_全国计算机等级考试什么时候报名
  9. 小米12系列旗舰最新爆料:内藏5000mAh电池但机身更薄
  10. wordpress 调用css,WordPress折腾记-精简CSS及JS在插件中的调用
  11. 【转】(Jquery)避免数据相加小数点后产生多位数和计算精度损失
  12. 网络工程师考试试题及答案+SUV
  13. Speedpdf——无需下载软件,就可以免费轻松搞定CAJ转word
  14. 前端--HTML,常用标签学习
  15. 使用用软通牒(UltraISO)制作U盘启动盘
  16. super this
  17. java 求最大公因数_三种算法求最大公约数——Java实现 | 学步园
  18. android 下 ftp 客户端软件编写(ftp4j)
  19. Android TabLayout基本使用及完美调整指示器位置的技巧
  20. 保护眼睛的颜色#CCE8CF

热门文章

  1. python 第三方库 工具
  2. 基于Spark MLlib平台的协同过滤算法---电影推荐系统
  3. Linux如何查看进程、杀死进程、查看端口等常用命令
  4. Scala学习笔记--Akka
  5. 搜索引擎爬虫蜘蛛的UserAgent收集
  6. 由树先序遍历和中序遍历输出其后续遍历
  7. 一个技术转销售人员的感悟--深刻(转)
  8. Eclipse IDE for Java EE Developers 与Eclipse Classic 区别
  9. ginkgo php,【行业资讯】PHP 开发框架 ginkgo v0.1.2 发布
  10. Access denied for user 'root'@'localhost' 解决流程