问题标签 [hilbert-curve]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
44 浏览

java - 我无法将值为 0-1023 的矩阵变为全 0 和 1(复杂)

我正在使用空间填充曲线(希尔伯特曲线)来尝试近似通过矩阵中的一组城市的最快方式)。我在项目中的最后一步是将所有数字变成 0 和 1

我使用一个从 0 到 1023 (32x32) 的值矩阵,每当一个数字中有一个城市时,它就会在它们之间画一条线。

我的问题是:如何将这些数字从 0 变为 1023,变为全 0(无城市)和 1(城市)并连接 1?

矩阵代码和我如何填充矩阵在lineRel函数的SimpleGraphics类中。在我的示例中,点 10、123、193、430 和 934 中有城市。

希尔伯特曲线类:

类 SimpleGraphics:

数字的输出是: 输出数字

路径的输出是:输出路径

0 投票
0 回答
204 浏览

python - 作业调度中的希尔伯特曲线实现

如何在作业调度方面实现希尔伯特曲线算法。
有人可以分享它背后的逻辑吗?

0 投票
1 回答
224 浏览

hilbert-curve - 如果希尔伯特曲线四叉树有效,为什么要转换为 S2 单元 ID?

我正在研究地理空间服务并使用希尔伯特曲线将纬度和经度转换为四叉树键。

例如,在 30 级时:(
45.5337699,-122.6988316 converts to 2/221022201033023103222221213221诺布山)

然后可以将其转换为 S2 小区 ID
6094788552675374000

当与附近的位置进行比较时:(
45.5308839,-122.6815796 >> 2/221022201033330012321301320023珍珠区)
S2 ID:6094788657473797000

很容易看出,我可以对前缀上的 HB Quatree Key 进行扫描,2/221022201033然后返回 Nob Hill 和 Pearl District 以及该前缀内的任何其他点。

我不明白为什么有必要进一步将 HB 四叉树密钥转换为 S2Cell ID (这似乎是有多少人正在实施这种地理位置技术)。也可以扫描。在这种情况下,前缀6094788. 有谁知道为什么要采取这个额外的步骤,以及从准确性的角度来看是否有必要?

0 投票
4 回答
702 浏览

algorithm - 找到包含点的最小范围的最有效算法/数据结构是什么?

给定数百万个价格范围的数据集,我们需要找到包含给定价格的最小范围。
以下规则适用:

  • 范围可以完全嵌套(即 1-10 和 5-10 有效)
  • 范围不能部分嵌套(即 1-10 和5-15无效)

示例:
给定以下价格范围:

  • 1-100
  • 50-100
  • 100-120
  • 5-10
  • 5-20

搜索价格7的结果应该是5-10
搜索价格100的结果应该是100-120(包含 100 的最小范围)。

实现这个的最有效的算法/数据结构是什么?
在网上搜索,我只找到了在范围内搜索范围的解决方案。
我一直在研究莫顿计数和希尔伯特曲线,但不知道如何在这种情况下使用它们。
谢谢。

0 投票
1 回答
147 浏览

rust - 为什么这个从 C (来自维基百科)移植的希尔伯特曲线实现似乎失败了?

我在 Wikipedia 上找到了以下用于绘制希尔伯特曲线的代码:

我将其放入c2rust.com中,并将 rot() 定义为第一个函数,并得到以下代码:

问题是结果似乎没有意义:

我绝对没想到会出现不同 N 的重复坐标。可能出了什么问题?这是用于比较的C测试代码:

以及预期的输出(由 C 生成):

0 投票
1 回答
3050 浏览

python - 使用海龟图形和递归的希尔伯特曲线

我正在尝试使用 python 海龟图形和递归来实现 L-System 生成的希尔伯特曲线。我的代码似乎适用于递归 n=1 和 n=2 的前两个级别,但除此之外,图形只是纠缠在一起(尽管我能够观察其中的更多模块),我似乎无法掌握这里可能有什么问题,我是否需要一些中间步骤来重新生成希尔伯特模块以进行更深层次的递归?请看我下面的代码,它比较简单:

希尔伯特 n=2

希尔伯特 n=3

0 投票
0 回答
143 浏览

java - 通过迭代计算协调列表 (COO) 稀疏矩阵的希尔伯特曲线

我正在研究 PageRank 问题并有一个协调列表 (Coo) 矩阵。该矩阵有一个源和目标数组,如下所示。每个源点都指向目的地的同一位置

我正在尝试对边缘进行预处理,以给出像希尔伯特这样的空间填充曲线计算的顺序。在将 (x,y) 转换为 d 转换回 (x,y) 时,我遇到了一些麻烦。

当前代码:

代码结果

关于这段代码有什么问题的任何想法?我知道我对全局变量有点过火了

我从这里得到了代码

编辑

我刚刚了解到数组通过引用进入方法,可用于删除 java 中的全局变量。我仍然有相同的结果

0 投票
0 回答
208 浏览

c# - 沿 3 维希尔伯特曲线将点转换为距离?

我正在尝试编写一个函数来计算沿 3 维希尔伯特曲线出现的点的距离。本质上是一个函数,它可以获取一个点的 x、y、z 坐标并计算它出现在曲线上的位置。假设 x、y 和 z 可以是整数 0 - 255,大致对应于 RGB 颜色空间。这样我就可以根据希尔伯特曲线创建一个有序的点列表。

我已经尝试在堆栈溢出上实现这里给出的代码,但是当我尝试用 C# 编写它时,这让我陷入了递归循环,而且这并不是我所追求的。我也尝试过实现此代码,但是,我必须误解它,因为它给了我似乎完全随机的结果。

目前,我正在关注本指南,并且已经完成了关于灰码的部分的编码。但是,当涉及旋转的示例计算时,我被卡住了。在表格中,我不确定最终数字是如何在 chnk、rotation 和 Flipbit 之间产生的。

我是一名计算机科学专业的学生,​​数学背景并不多。

下面是我到目前为止的代码示例

0 投票
1 回答
141 浏览

indexing - 使用空间填充曲线的空间和时空索引

我想在给定空间信息或时空信息的情况下找到点 q 的最近邻居。为此,我想使用基于 Z 阶曲线或希尔伯特曲线的键创建 B 树索引。然而,我发现希尔伯特曲线比 Z 阶更难实现。我的问题是:

在最近邻查询中是否值得在 Z 阶曲线上使用希尔伯特曲线?

0 投票
2 回答
912 浏览

python - 如何按希尔伯特曲线的顺序将二维矩阵(nxn)展平为一维数组?

我想将 python 中的 2d (nxn) 矩阵展平为 1d 数组,但不是行主要顺序,而是希望它遵循希尔伯特曲线的顺序?

例如,如果我的输入数据是 2x2 -->

我希望输出为 1x4 -->

但我想用尺寸为 256 x 256 的图像来做到这一点

另一个例子是给定数据

我希望输出是

在 python 中执行此操作的最佳方法是什么?