2012-08-08 57 views
4

任何時候可以指向Z代碼曲線實現的Java代碼嗎? 我有x,y浮點座標,我想爲它們提供一個單一的維度表示,我知道這可以使用Z階曲線變換。 我無法找到此功能的Java實現或C代碼。Z順序曲線Java實現

我將非常感謝任何幫助!

回答

0

我會自己寫這個。

首先通過使用Math.getExponent並取其中的maximum來計算兩個指數,從浮點數轉換爲整數。那麼你可以用scale這些數字來表示這些數字中的較大數字在小數點前有32位。然後將結果舍入(或截斷)爲int。然後,您必須將這兩個整數合併爲一個長整數,然後使用存儲的指數再次縮放結果。

如果您的輸入已被限制爲例如[0,1]範圍內,您可以簡單地使用基於整數的定點算術,而不是手動重新縮放。

要做位交錯,我會使用一個查找圖,例如,取8位塊並計算相應的16位交織塊。這樣你就不必做太多的位移操作。

+1

我假設OP不是隻看*經緯度對(這是很容易的部分),而是在後面利用Tropf和Herzog * BIGMIN */* LITMAX *進行高效查找。範圍切割技術。 – seh 2012-08-08 23:50:35

+0

你能否提供更多細節?我不安靜的理解。你能舉一個如何將float轉換爲int的示例嗎?我已經找到了兩個整數如何變成一個長的使用比特交織的結果。 – gfan 2015-04-07 12:12:14

+1

嗨MvG,請給出你的第一段和第二段的示例代碼。第三,我已經知道如何比特交織。 – gfan 2015-05-09 08:52:37