簡體   English   中英

ℝ³ -> ℕ 映射有限數量的值

[英]ℝ³ -> ℕ mapping for a finite number of values

我正在尋找一種能夠將有限但大量的 3 維位置(大約 10^11)映射到索引的算法(因此映射ℝ³ -> ℕ)

我知道制作 ℕ -> ℝ³ 映射是可能且相當簡單的,這基本上就是我想要做的,但是 ℕ -> ℝ³ 將是一種不切實際的方法來確定 ℕ 的哪些索引靠近某個位置,

理想情況下,我還想確保 ℕ 的有限子集不包含重復項。

關於如何實現這一點的一些背景,以便更好地了解這個問題的一些天真的解決方案的約束和問題:

我試圖想出一種方法將星系中的恆星映射到一個唯一的 ID,然后我可以將它用作隨機數生成器的“種子”,一個 ℕ -> ℝ³ 映射需要我迭代所有 ℕ找到給定位置附近的 ℝ³ 的值,這顯然不是一種實用的方法

我已經找到了一些關於康托爾配對功能和燕尾的信息,但這些會導致問題,因為那些主要適用於 ℕⁿ 而不是 ℝⁿ。

不能保證我的 ℝ³ 值遵循網格,如果他們這樣做了,我可以通過確定值在哪個“盒子”中來映射 ℝ³-> ℕ³,然后使用康托爾的配對函數來確定哪個 ℕ 屬於那個盒子,但在我的情況下,該框可能包含多個值,或者沒有。

在此先感謝您的幫助

您可以使用kd 樹在空間上划分您的一組點。 要映射到自然數,請將通過樹到每個點的路徑視為二進制數字串,其中0是左分支, 1是右分支。 這可能無法准確找到您要查找的內容,因為某些在空間上彼此接近的點可能位於不同的分支上,因此在數值上彼此相距較遠。 但是,如果兩個點在數值上彼此接近,則它們在空間上將彼此接近。

或者,您也可以使用octree ,在這種情況下,您下降到樹中的每個級別一次獲得三個位。 您可以完全划分空間,使每個區域最多包含一個興趣點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM