我有一个基于海龟图形的算法,用于生成二维空间填充希尔伯特曲线。它是递归的,如下所示:
Wa 想画一条有序的曲线n
,在方向x
(哪里x ∈ {L, R}
),让y
是与 的相反方向x
。我们这样做:
- 转向
y
- 画一条有序
n-1
、方向的希尔伯特曲线y
- 向前迈出一步
- 转向
x
- 画一条有序
n-1
、方向的希尔伯特曲线x
- 向前迈出一步
- 画一条有序
n-1
、方向的希尔伯特曲线x
- 转向
x
- 向前迈出一步
- 画一条有序
n-1
、方向的希尔伯特曲线y
我理解这一点,并能够实施一个可行的解决方案。但是,我现在正试图将其“升级”为 3D,这就是我基本上碰壁的地方;在 3D 中,当我们到达一个顶点时,我们可以转向不是两个,而是四个方向(直行或后退显然不是一种选择,因此是四个而不是六个)。直觉上,我认为我应该存储海龟“行走”的平面及其在世界中的大致方向,由enum
具有六个值的 an 表示:
- 向上
- 下
- 剩下
- 正确的
- 在(从相机的角度来看,它进入了世界“内部”)
- 外(同上,外)
海龟,就像在 2D 中一样,具有包含上述信息的状态,当它到达顶点时(可以被认为是“交叉点”)必须根据该状态决定下一步要去哪里。而在二维中它相当简单,在三个方面,我很难过。
- 我的方法正确吗?(即,这是我应该存储在海龟状态中的内容吗?)
- 如果是,我如何使用这些信息来决定下一步去哪里?
因为填充希尔伯特曲线的 3D 空间有许多变体,所以我应该指定这是我用作参考并帮助我想象的: