问题标签 [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 回答
867 浏览

javascript - 我的希尔伯特曲线有什么问题?

我有一个 Javascript 库可以在希尔伯特曲线上绘制点,但是点确定有问题。

我编写了一个测试页,在路径上绘制了 256 个点。虽然它应该看起来像这样,但它却是这样出来的:

似乎有一些不连续性。

您可以在http://jsbin.com/oheloc/1/edit检查页面背后的源(对于踢,解锁递归深度并将其提高到高于点指数以查看整个路径变得更加变形)。

这张照片有什么问题?我认为这与(至少)其中一个象限转换不正确有关,但我无法弄清楚它应该是什么。

0 投票
2 回答
493 浏览

global - 使用空间填充曲线加速全局照明 - 它是如何工作的?

仅出于学习目的,我正在研究光线追踪技术。我最近发现了 Global Illumation 及其变体,阅读了Kevin Beason的这部惊人的作品。我确实尝试过用另一种语言(Lua)移植 smallpt。

到目前为止,我的工作正常,但在我看来它渲染场景太慢了。到目前为止,我在互联网上进行了挖掘,并且我在很多涵盖该主题的技术论文中看到这是全局照明技术的主要问题,尤其是路径跟踪。

在我看来,有一些方法可以加快这一过程,例如间距填充曲线(例如希尔伯特曲线)。基本上,它们都将视口划分为桶(或图块),然后命令渲染器以特定顺序在每个桶上处理路径跟踪。从技术上讲,我没有研究如何实现希尔伯特曲线,但我想了解,实际上,这如何能让整个过程更快?

我的第一个假设是,考虑到每个桶 appart,渲染器是在特定像素上调用的,然后其他的是使用插值技巧的样本,但实际上,渲染器似乎是在桶上的每个单个像素上调用的。

因此,在我看来,渲染器将处理地图的所有像素,这与两个嵌套的 for 循环(每行、每列)的工作量相同。所以我知道我显然遗漏了一些东西,因此期待一些清晰的解释。

提前致谢。

0 投票
3 回答
15781 浏览

python - 在 Python 中生成 3D 希尔伯特空间填充曲线的算法

我想将 RGB 颜色立方体中的点映射到 Python 中的一维列表,以使颜色列表看起来不错且连续。

我相信使用 3D Hilbert 空间填充曲线将是一个很好的方法,但我已经搜索过并且没有找到非常有用的资源来解决这个问题。特别是 Wikipedia 仅提供用于生成 2D 曲线的示例代码。

0 投票
0 回答
416 浏览

spatial-index - 将矩形转换为希尔伯特数范围

当空间数据使用希尔伯特数表示时,一个矩形范围映射到多个希尔伯特数范围。有没有什么快速的方法可以在不遍历给定矩形 R 重叠的每个单元格的情况下找到这个映射?我可以考虑只考虑 R 的边界单元格然后对它们进行排序......有没有更好的方法?

谢谢。

0 投票
0 回答
96 浏览

bit-manipulation - 推断将位数组 1 转换为位数组 2 的最简单方法

考虑长度为 n 的所有位数组的集合。现在考虑从这个集合映射到这个集合的所有 1 对 1 函数的集合。

现在从后一组中选择一个函数。是否有任何算法可以找到实现此功能的“最小”方法?假设我们只能访问基本的位数组运算符,例如 AND OR XOR NOT 和左右位移。

如果您想知道,我想要这个的原因是因为我正在编写一个算法来从位的 z 曲线排序转换为位的希尔伯特曲线排序。我目前的方法是制作一个查找表,但我敢打赌会有更好的选择。

作为一个简单的例子,假设我有一个如下所示的真值表:

然后我应该能够推断,给定一个输入位串input,输出位串output是(在java语法中)

这是这种情况下的证明:

0 投票
1 回答
401 浏览

java - 如何在希尔伯特曲线空间上围绕主轴执行旋转

所以这是我从http://www.tiac.net/~sw/2008/10/Hilbert/moore/hilbert.c获取 Doug Moore 代码并将其转换为 java 以在我的硕士论文中使用的问题一种在 Photon Mapped Ray Racer 中存储光子的 LSH 方法。但问题就在这里。由于我稍后在我的过程阈值中使用希尔伯特索引的方式正在使用。但是阈值与希尔伯特曲线中的裂缝对齐,并在我的最终图像中造成伪影。根据研究,我对此的解决方案是围绕主轴稍微旋转希尔伯特曲线空间,但我不知道如何实现这一点。如果有人对此有任何想法,我现在非常卡住,可以使用一些帮助。

temp = photonsBH[i].key = h.hilbert_c2i(三,十六,坐标);这条线是我如何调用希尔伯特函数,它在 3 个参数中首先是维数,第二是位数,第三是通过以下等式发送的点,以保持准确性并将点移为正数。

来自 hilbert.java 的代码

0 投票
0 回答
107 浏览

c - C 信号处理 - 实现疑问

我正在尝试从 matlab 改编算法。

我的算法:

我想从这个库cwplib中实现卷积和希尔伯特

我尝试通过上面的这个算法来实现卷积,但结果与 Matlab 不同。

如果没有,我该如何以另一种方式或卷积实现希尔伯特?

我能怎么做?感谢任何帮助。

0 投票
2 回答
559 浏览

algorithm - 在一组四叉树中找到最佳深度/范围以优化边界框中点的检索

如果我有一组四叉树(比如在希尔伯特曲线上),那么在特定深度找到最佳(或足够好)范围集的好方法是什么。

例如,如果我正在搜索边界框 0,0 和 1,3 之间的点,那么我可以应用以下简单范围:

  • 深度 1 - 范围 0,0-1,0(~33% 搜索空间)
  • 深度 2 - 范围 0,0-1,0 和 1,0-0,1(~13% 搜索空间)
  • 深度 3 - 范围 0,0-1,0 和 1,3-0,3(~9.8% 搜索空间)

希尔伯特曲线

显然,深度 3 对这个搜索是最优的,但是与从深度 1 到深度 2 的下降相比,缩小的搜索空间只下降了一小部分。

在(大得多的)更大的深度,或跨边界的搜索,是否有一个或多个好的算法来估计不同深度之间的差异,或者理想地选择不同深度的范围组合,理想地覆盖边界框。

我对多边形不感兴趣,但如果有适用于多边形的解决方案,我会加分。

0 投票
3 回答
2033 浏览

java - 希尔伯特-黄变换:瞬时频率

我正在用 Java 实现“经验模式分解”。下一步是希尔伯特-黄变换,我需要找到如何获得“瞬时频率”。有人知道如何获得吗?

使用 EMD 方法,任何复杂的数据集都可以分解为有限且通常数量很少的分量,即固有模态函数 (IMF) 的集合。下一步是希尔伯特-黄变换。由此我计算信号的相位,在我必须计算瞬时频率之后,我在 Matlab 代码中搜索如下链接:http ://read.pudn.com/downloads100/sourcecode/math/408870/emd/instfreq/archive/ ifreq.m__.htm

但我不明白。

谢谢

0 投票
0 回答
39 浏览

c - Bit Twiddlings 64bits 的 2D 空间填充曲线

是否有任何空间填充曲线可以用 Bit Twiddling 计算(索引),不同于中性(简单移位)、Morton(二进制幻数)和 Hilbert(来自 Morton)?任何带有 encode(xy2d)/decode(d2xy) 的例子?