2011-01-30 13 views
6

Mi chiedevo se qualcuno conosce una buona libreria per la tassellazione di un piano iperbolico con poligoni (il mio interesse principale è la tassellazione {8,3}). Ho trovato alcune applet qua e là ma la separazione della logica dalla vista è orrenda in tutte. Sarebbe perfetto se ci fosse una libreria che non si occupasse affatto di grafica (dal momento che NON sto pensando di usare Swing o creare la mia applet personale), basta prendere i parametri: {p, q} e il conteggio dei livelli, quindi restituisce una serie di linee o punti (o oggetti poligonali). Se il peggio dovesse peggiorare, dovrò implementare la mia libreria personale, quindi potrebbe anche essere utile se qualcuno sa di un documento che descrive in dettaglio l'algoritmo per la tassellatura.Libreria di tessere iperboliche Libreria Java

EDIT

A proposito, avrei dovuto detto che ho trovato un fresco-looking hyperbolic tessellations applet da Don Hatch, ma ho eccitato in un primo momento. Poi ho guardato quello che afferma di essere il source code. All'interno del JAR ho scoperto file con estensione .prejava e non avevo assolutamente idea di cosa stavo guardando - sembrava essere un pessimo ibrido tra codice Java e C. Nel tentativo di un'ispezione più ravvicinata, fui immediatamente ricompensato con un mal di testa. Apparentemente stava cercando di ottimizzare il compilatore Java ... o almeno questo è quello che ho raccolto dal guardare il contenuto di javacpp. Inutile dire che sono estremamente titubante a passare il mio tempo a seguire le sue istruzioni per generare i file sorgente Java usando il compilatore C, wow ...

+1

In primo luogo, grazie per questa domanda - Ho una necessità simile. Inoltre, so che questo post è vecchio, ma volevo segnalare ai futuri lettori che ottenere il codice sorgente di Don Hatch per compilare non è così difficile. 'javacpp' è solo uno script perl che esegue il preprocessore C sui file .prejava per produrre normali file .java. Tutto quello che sta facendo è abilitare l'uso di C#defines, #ifdefs, ecc., Che sono delle belle funzionalità. (Niente a che fare con l'ottimizzazione.) Se hai 'make',' perl' e 'cpp', esegui semplicemente' make' e tutto viene compilato senza problemi. – LarsH

+0

Tuttavia, aggiungerò che la separazione tra logica e vista potrebbe non corrispondere a ciò che ti serve. Hatch fa tutto in termini di segmenti di linea, che sono metà-lati dei poligoni piastrellati. Questi segmenti di linea non sono raggruppati in poligoni o anche in bordi di poligoni interi. Quindi, se hai bisogno di fare cose in termini di poligoni, o di "motivi" replicati (ad esempio il pesce di Escher), potresti trovare difficile ottenere dal codice di Hatch quello che ti serve. Tuttavia il suo codice sembra il più efficiente. – LarsH

risposta

2

potrebbe essere un po 'fuori tema, sono anche alla ricerca di una implementazione pulita e liberamente accoppiata delle tessellazioni iperboliche. ho trovato questo straight-forward attuazione del Poincaré modello del disco http://haishibai.blogspot.com/2010/07/draw-hyperbolic-geometry-poincare-disc.html

ho trovato anche questo documento che ha qualche pseudo codice http://www.d.umn.edu/cs/thesis/ajit_datar_ms.pdf

si parla di codice sorgente disponibile: hyperart http://sourceforge.net/projects/hyperart/ ma è un exe compilato senza fonte.

+0

Duuuuude! Eccezionale! Dovrò dare un'occhiata più da vicino ma sembra che sarà immensamente utile! – Andrey

+0

Perché dici che l'iperart non ha origine? Eccolo: http://hyperart.cvs.sourceforge.net/viewvc/hyperart/ Vuoi tutto in un unico archivio? Clicca su "Scarica GNU tarball". – LarsH

+0

erf my bad, mi dispiace per quello e grazie per il link :) – nicoptere

3

C'è un'applet allo http://aleph0.clarku.edu/~djoyce/poincare/PoincareApplet.html. Forse puoi leggere il codice.

+1

Ho visto questo e ho la fonte per questo. Ma dato che non è una libreria e manca di esempi di utilizzo e documentazione, non voglio ancora approfondire il suo lavoro interiore.Il mio piano è di iniziare a guardare alla fonte di questa applet solo se non trovo un'alternativa migliore. – Andrey

+0

I meccanismi interni di questo codice applet sono piuttosto chiari ... molto più facili da usare, IMO, di quelli di Hatch. – LarsH

0

Controllare anche l'applet Tyler che Don e io abbiamo scritto. Fare clic sulla casella di controllo "Iperbolico", quindi immettere "8,8,8" nel campo "Curvatura basata su". Dovrai anche selezionare il pulsante di opzione "8" sulla destra in modo che ogni clic aggiunga un ottagono al bordo più vicino al puntatore del mouse. Puoi anche fare clic su un tasto numerico per inserire poligoni con quel numero di lati. Leggi le istruzioni e sarai in grado di costruire rapidamente qualsiasi tipo di piastrellatura che puoi immaginare. Potrebbe essere tutto ciò di cui hai bisogno, ma la fonte completa è disponibile anche su quella pagina, e senza le cose di pre-elaborazione.