在优化光线追踪器时,我尝试使用 Morton 空间填充曲线来改善相交数据结构的数据局部性,但我的 3D 空间不是立方的(例如 512x512x256)。 所有边都是 2 的幂,但并非所有边的长度都相同。 我一直找不到任何边为 2 次方的非方形莫顿曲线的例子。 如果重要的话,我可以保证 x/y 轴的大 ...
在优化光线追踪器时,我尝试使用 Morton 空间填充曲线来改善相交数据结构的数据局部性,但我的 3D 空间不是立方的(例如 512x512x256)。 所有边都是 2 的幂,但并非所有边的长度都相同。 我一直找不到任何边为 2 次方的非方形莫顿曲线的例子。 如果重要的话,我可以保证 x/y 轴的大 ...
我在 3D 网格上使用 morton 编码,以便一组点 (x,y,z) 给我一个 morton 编码 M(x,y,z) 的一维数组,其中 x,y,z 是整数。 对于每个 M(x,y,z),我的计算还需要网格上的 26 个最近邻,即。 M(x-1,y-1,z-1), M(x-1,y-1,z+0), ...
本文解释了如何计算 bigmin 和 litmax(大最小值和小最大值)。 我很难理解第 4 步的措辞,以了解它将如何转换为伪代码、C 或 Python。 第四步 一个水平分割我们知道我们需要计算最接近yn分割线的纬度值。 取 min 和 max 的最高有效位直到它们第一次不同的地方 y ...
我想根据空间信息或时空信息找到点q的最近邻居。 为此,我想使用基于Z阶曲线或希尔伯特曲线的键创建B树索引。 但是,我已经看到,希尔伯特曲线比Z阶更难实现。 我的问题是: 是否值得在最近的邻居查询中对Z阶曲线使用希尔伯特曲线? ...
我希望以快速有效的方式在 C 中为 Morton Z-Order 编码和解码编写两个函数,即。 我之前关注过这些问题 如何计算 3d morton 数交错 3 个整数的位 我当前基于 SO 和开源代码的解决方案是 我最近遇到了这个问题(在尝试使用 2D morton 代码时): 2d mo ...
我有一个 3D 网格/阵列,比如u[nx+2][ny+2][nz+2] 。 尾随的 +2 对应于x,y,z三个维度中的每一个维度中的两层光晕单元。 我有另一个允许细化(使用四叉树)的网格,因此我有每个单元格的 morton 索引(或 Z 顺序)。 假设没有细化,这两个网格在物理现实中是相似的(除了 ...
我正在构建用于空间索引的Morton数,我有8个无符号16位数,它们将变成__int128数。 效率是至关重要的,所以天真的解决方案(循环所有)或构建单独的8 128位数字太昂贵了。 我正在使用GCC,目标机器是64位但没有BMI2支持。 如何加快计算速度? ...
我已经实现了一种decode/encode方法,用于将2d点转换为它们各自的morton code 。 我在寻找的是找到最近的邻居(在min_distance )所以例如这样的事情: 这可能吗? ...
我需要从2坐标x,y计算平面上某点的Z-Index(Morton)。 传统上,这只是通过比特交织来解决的。 但是我有边界,并且我希望点的z-index仅在活动区域内增加morton计数,并在外部时跳过计数。 需要说明的是,4x4平方的典型z顺序为: 但是,如果我有一 ...
我有点困惑,因为我测试了几种算法来计算 z 索引,对于 (8, 8, 8) 我得到 3584,对于 (7, 7, 7) 我得到 511,这是正确的。 问题是 8*8*8 = 512,而 z-index 是 3584。这意味着如果我使用一维数组按 z-index 存储东西,我会不会使用更多空间,并且会 ...
第一个函数使用Binary Magic Numbers的交织位将[x,y]编码为64位宽的莫顿码,其中x和y是32位宽的整数。 反向功能是什么? ...
第一个函数将[x,y]编码为64位宽的Morton代码,其中x和y是32位宽整数,使用Binary Magic Numbers的Interleave位。 反向功能是什么? ...
如何将给定[x,y]的莫顿码(z阶)编码/解码为产生64位morton码的32位无符号整数,反之亦然? 我确实有xy2d和d2xy,但仅适用于16位宽的坐标,产生32位morton数。 在网上搜索了很多,但找不到。 请帮忙。 ...
如何在范围搜索中使用 Morton Order? 来自wiki ,在“使用一维数据结构进行范围搜索”段落中, 它说 “被查询的范围(x = 2, ..., 3, y = 2, ..., 6)用虚线矩形表示。它的最高Z值(MAX)是45。在这个例子中,值在 Z 值递增方向搜索数据结构时遇到 F = ...
我在 Inte.net 上搜索,但只找到了一些关于如何将纬度和经度转换为莫顿代码(z 顺序曲线)的信息。 从链接我知道如何将两个整数转换为莫顿代码。 但是,如果我有纬度或经度等浮点值,我应该如何将浮点值转换为整数? 然后我可以将 int 转换为 Morton 代码。 例如,c# 代码: 在这里,我 ...
我需要以偶数索引落在低位字节中的方式对一个16位无符号整数进行混洗,并且奇数索引落在高位字节中。 我的代码目前看起来像这样: 我想知道是否有一个比简单地提取和移动每个单独位更优雅的解决方案? ...
对于我当前的输入数据,即3D点,我在访问点列表时使用Morton代码来提高缓存一致性。 我有一些其他数据是6D和7D。 Morton代码对于这样的尺寸仍然是一种很好的技术吗? 还是有其他技术吗? 其他空间填充曲线技术比3D本身的Morton更复杂,我想知道人们是否使用6D / 7D或 ...
我一直在阅读有关莫顿码的信息,但我知道在生成的数字序列中保留了局部性。 我不了解的是如何使用这些信息来压缩数据或有效地并行构造数据。 资料来源: http : //www.forceflow.be/2013/10/07/morton-encodingdecoding-through- ...
我想生产一个32位,64位和128位的morton密钥,具有最佳代码! 解决方案是什么? ...
如果我有一个数据集,其中键是3D中的点,由3个带符号的64位整数表示。 我想使用(排序的)键值存储来存储它们,其中键只是字节数组(但我可以指定一个比较器)。 我想我可以通过使用位交错将所有这些点转换为字节数组,就像在Z / Morton命令中一样,如在如何计算3D Morton数中那样 ...