2011-01-30 68 views
6

我想知道是否有人知道用多邊形鑲嵌雙曲面的好曲庫(我的主要興趣在於{8,3}曲面細分)。我在這裏和那裏發現了一些小程序,但是從視圖中分離出來的邏輯在所有這些小程序中都是可怕的。如果有一個庫根本不處理圖形(因爲我不打算使用Swing或創建自己的小程序),它會是完美的,只需要參數:{p,q}和圖層數,然後返回線或點(或多邊形對象)的數組。如果最壞的情況出現了,我將不得不實施我自己的庫,所以如果有人知道一些詳細描述曲面細分算法的論文,也許會有所幫助。雙曲鑲嵌Java庫

編輯

順便說一句,我應該提到,我發現了一個看起來很酷的唐哈奇hyperbolic tessellations applet起初很興奮。然後我看着他自稱是source code。在JAR內部,我發現擴展名爲.prejava的文件,並且完全不知道我在看什麼 - 它似乎是Java和C代碼的混合。經過仔細檢查,我立即得到了頭痛。顯然他試圖優化Java編譯器......或者至少這是我通過查看javacpp的內容所得到的結果。不用說,爲了用C編譯器生成Java源文件,我非常猶豫要花時間按照他的指示,哇...

+1

首先,感謝這個問題 - 我有類似的需求。另外,我知道這篇文章已經過時了,但我想向未來的讀者指出,讓Don Hatch的源代碼編譯並不困難。 `javacpp`只是一個perl腳本,它在.prejava文件上運行C預處理器來生成正常的.java文件。他所做的只是啓用C#定義,#ifdefs等,這些都是很好的功能。 (與優化無關)如果你有`make`,`perl`和`cpp`,你只需運行`make`,它就可以無縫編譯。 – LarsH 2012-03-29 08:16:34

+0

但是我會補充一點,邏輯和視圖之間的分隔可能不符合你的需要。 Hatch根據線段來做所有事情,這些線段是平鋪多邊形的半邊。這些線段不會分組爲多邊形,甚至不分爲整個多邊形邊。因此,如果您需要按照多邊形來做事情,或者複製「主題」(例如埃舍爾的魚),您可能很難從Hatch的代碼中獲得所需的內容。但是他的代碼似乎是最有效的。 – LarsH 2012-03-29 10:14:45

回答

2

它可能有點偏離主題,我也在尋找一個乾淨,鬆散耦合的雙曲線tesselations的實現。 我發現這個直觀的實現龐加萊磁盤模型http://haishibai.blogspot.com/2010/07/draw-hyperbolic-geometry-poincare-disc.html

的我還發現本文中,有一些僞代碼 http://www.d.umn.edu/cs/thesis/ajit_datar_ms.pdf

他們談論可用的源代碼:hyperart http://sourceforge.net/projects/hyperart/但它是一個編譯的exe沒有資源。

3

有一個小程序在http://aleph0.clarku.edu/~djoyce/poincare/PoincareApplet.html。也許你可以閱讀代碼。

+1

我看到了這一個,並有它的來源。但因爲它不是一個圖書館,並且缺乏示例用法和文檔,我不想深入研究它的內部工作。我的計劃是隻有在找不到更好的選擇時纔開始查看這個applet的來源。 – Andrey 2011-01-30 19:30:57

0

還請查看Tyler小應用程序,我和Don寫了。點擊「雙曲線」複選框,然後在「基於曲率」字段中輸入「8,8,8」。您還需要選擇右側的'8'單選按鈕,以便每次單擊都會將八邊形添加到距鼠標指針最近的邊緣。您也可以單擊數字鍵以插入具有該邊數的多邊形。閱讀說明,您將很快就能夠構建您可以想象的任何類型的平鋪。這可能是你所需要的,但是完整的源代碼也可以在該頁面上找到,而且不需要預處理。