2011-01-30 11 views
6

Me preguntaba si alguien conoce una buena biblioteca para teselar un plano hiperbólico con polígonos (mi principal interés radica en {8,3} teselación). Encontré algunos applets aquí y allá, pero la separación de la lógica de la vista es horrenda en todos ellos. Sería perfecto si hay una biblioteca que no trata los gráficos (ya que NO estoy planeando usar Swing ni crear mi propio applet), simplemente toma los parámetros: {p, q} y el conteo de capas, luego regresa una matriz de líneas o puntos (u objetos de polígono). En el peor de los casos, tendré que implementar mi propia biblioteca, por lo que también podría ser útil si alguien conoce algún documento que describa en detalle el algoritmo para el teselado.Biblioteca de Java de teselado hiperbólico

EDITAR

Por cierto, que debería haber mencionado que me encontré con un aspecto atractivo hyperbolic tessellations applet por Don Hatch y se emocionó al principio. Luego miré lo que dice ser el source code. Dentro del JAR descubrí archivos con una extensión .prejava y no tenía absolutamente ninguna idea de lo que estaba viendo, parecía ser un horrible híbrido entre el código Java y el código C. En un intento de una inspección más cercana fui recompensado inmediatamente con un dolor de cabeza. Aparentemente estaba tratando de optimizar el compilador de Java ... o al menos eso es lo que pude deducir al mirar los contenidos de javacpp. Huelga decir que estoy muy indeciso para pasar el tiempo siguiendo sus instrucciones para generar los archivos fuente de Java utilizando el compilador de C, wow ...

+1

En primer lugar, gracias por esta pregunta: tengo una necesidad similar. Además, sé que esta publicación es antigua, pero quería señalar a los futuros lectores que compilar el código fuente de Don Hatch no es tan difícil. 'javacpp' es solo un script de Perl que ejecuta el preprocesador C en los archivos .prejava para producir archivos .java normales. Todo lo que hace es habilitar el uso de C#defines, #ifdefs, etc., que son buenas características para tener. (Nada que ver con la optimización.) Si tiene 'make',' perl' y 'cpp', simplemente ejecuta' make' y todo se compila a la perfección. – LarsH

+0

Sin embargo, agregaré que la separación entre la lógica y la vista puede no corresponderse con lo que necesita. Hatch hace todo en términos de segmentos de línea, que son medios bordes de los polígonos en mosaico. Estos segmentos de línea no están agrupados en polígonos, o incluso en bordes de polígono completos. Por lo tanto, si necesita hacer cosas en términos de polígonos o "motivos" replicados (por ejemplo, el pez de Escher), puede que le resulte difícil obtener del código de Hatch lo que necesita. Sin embargo, su código parece ser el más eficiente. – LarsH

Respuesta

2

podría estar un poco fuera de tema, también estoy buscando una implementación limpia y ligeramente acoplada de teselaciones hiperbólicas. Me encontraron esta aplicación recta de avance del modelo del disco de Poincaré http://haishibai.blogspot.com/2010/07/draw-hyperbolic-geometry-poincare-disc.html

También encontré este papel que presenta algún pseudo código http://www.d.umn.edu/cs/thesis/ajit_datar_ms.pdf

que hablar sobre el código fuente disponible: hyperart http://sourceforge.net/projects/hyperart/ pero es un exe compilado sin fuente.

+0

Duuuuude! ¡Increíble! Tendré que echarle un vistazo más de cerca, pero parece que va a ser inmensamente útil. – Andrey

+0

¿Por qué dices que hiperart no tiene fuente? Aquí está: http://hyperart.cvs.sourceforge.net/viewvc/hyperart/ ¿Lo quiere todo en un solo archivo? Haga clic en "Descargar GNU tarball". – LarsH

+0

erf mi mal, perdón por eso y gracias por el enlace :) – nicoptere

3

Hay un applet en http://aleph0.clarku.edu/~djoyce/poincare/PoincareApplet.html. Tal vez puedas leer el código.

+1

Vi este y tengo la fuente para ello. Pero como no es una biblioteca y carece de ejemplos de uso y documentación, todavía no quiero profundizar en su funcionamiento interno.Mi plan es comenzar a buscar el origen de este applet solo si no encuentro una mejor alternativa. – Andrey

+0

El funcionamiento interno de este código de applet es bastante claro ... es mucho más fácil trabajar con IMO que con Hatch. – LarsH

0

También vea el applet Tyler que Don y yo escribimos. Haga clic en la casilla de verificación "Hiperbólica", luego ingrese "8,8,8" en el campo "Curvatura basada en". También querrás seleccionar el botón de radio '8' a la derecha para que cada clic agregue un octágono al borde más cercano al puntero del mouse. También puede hacer clic en una tecla numérica para insertar polígonos con esa cantidad de lados. Lea las instrucciones y podrá construir rápidamente casi cualquier tipo de mosaico que pueda imaginar. Esto puede ser todo lo que necesita, pero la fuente completa está disponible en esa página también, y sin las cosas de procesamiento previo.