Mec*_*Eng 2 3d hilbert-curve space-filling-curve
虽然将 3D 坐标转换为 z 顺序曲线相对简单(Fortran 中的高效 z 顺序转换),但我很难理解使用不同空间填充曲线(例如 Peano 或 Hilbert)的数学原理。任何关于执行转换的实际代码如何看起来的提示将不胜感激。目标是拥有一个子例程,该子例程将 xyz 坐标作为输入,并进行任何必要的归一化,并返回空间填充曲线的索引。
子程序(x,y,z,空间填充索引)
与此相关的是:我读到有很多方法可以在 3D 空间中定义希尔伯特曲线,就局部性而言,哪种方法最好?如果这个问题有一个明确的答案的话……
该应用程序将对笛卡尔计算网格中的单元进行重新排序,目的是在单元访问其邻居单元时增加缓存命中率。
希尔伯特曲线的工作原理是在每一步使用相同的基本形状递归地划分立方体(对于 3D),通过旋转曲线使子立方体的出口点与下一个立方体的入口点相匹配。
C. Hamilton 的技术报告“紧凑希尔伯特指数”是一个极好的资源。该报告还介绍了非三次系统的紧凑希尔伯特指数。
当我认真思考这个问题时,我在 2015 年写了一篇博文:通过希尔伯特索引的示例 Python 代码和希尔伯特“子立方体”的旋转说明来理解希尔伯特曲线。作为我编写的基于粒子的分子动力学模拟代码的一部分,我在 Fortran 中实现了紧凑的希尔伯特索引,请参见此处。
我相信,重新详细讨论细节“超出了SO答案的范围”,但上面的资源应该对您有很大帮助。
| 归档时间: |
|
| 查看次数: |
1869 次 |
| 最近记录: |