我有在兩個維度上產生空間填充Hilbert曲線基於龜圖形算法希爾伯特曲線。它是遞歸和是這樣的:生成3D空間填充使用龜圖形
媧要繪製的順序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
六個值表示:
- 最多
- 下
- 左
- 右
- 在(從攝像機的角度來看,它會「內部」的世界)
- 輸出(同上,外)
在2D烏龜,等,具有包含上面列出的信息的狀態,並且當它達到作爲頂點(其可以被認爲是一個「交叉」)具有做出決定下一步去哪裏,基於該州。而在兩個維度上,這是相當簡單的,三個,我很難過。
- 我的方法是否正確? (即,這是我應該存儲在烏龜的狀態?)
- 如果是這樣,我該如何使用該信息來決定下一步該去哪裏?
因爲有三維空間填充希爾伯特曲線許多變種,我應該指定這是我用什麼作爲參考和幫助我的想象:
我知道一個similar question已經被問到,但接受的答案鏈接到一個網站有這個問題是解決使用不同的方法(即不龜圖形)。
一般情況下,在方向'z'轉,然後繪製方向'z'的曲線。但在步驟8中,您轉向'x',並在步驟10中,您正在朝'y'方向繪圖。這是一個錯字嗎? – Teepeemm
的可能的複製[算法用於產生在Python三維希爾伯特空間填充曲線(http://stackoverflow.com/questions/14519267/algorithm-for-generating-a-3d-hilbert-space-filling-curve-in -蟒蛇) – Cimbali