Haga un diagrama (disco Poincare) de una teselación en un plano hiperbólico, como:
El programa toma cuatro entradas:
1) Cuántos bordes / polígono (tres en este ejemplo).
2) Cuántos se cruzan en cada vértice (siete en este ejemplo).
3) Cuántos pasos se alejan del vértice central para renderizar (5 en este ejemplo, si se mira de cerca) Esto significa que se incluye un vértice si se puede alcanzar en 5 o menos pasos desde el centro. Los bordes se representan si se incluyen ambos vértices.
4) La resolución de la imagen (un solo número de píxeles, la imagen es cuadrada).
El resultado debe ser una imagen. Los bordes se deben representar como arcos circulares, no como líneas (la proyección del disco de Poincaré convierte las líneas en círculos). Los puntos no necesitan ser prestados. Cuando el usuario coloca algo que no es hiperbólico (es decir, 5 triángulos que se encuentran en cada vértice), el programa no tiene que funcionar correctamente. Este es el código de golf, por lo que gana la respuesta más corta.
fuente
Respuestas:
Mathematica, 2535 bytes
Tomado de aquí (de ahí por qué es el wiki de la comunidad). Realmente no tan golfizado. Vea el enlace proporcionado para la explicación del autor de su código.
Además, no soy un experto en Mathematica, pero apuesto a que Martin podría hacer maravillas en la longitud del código. Ni siquiera entiendo las matemáticas detrás de esto.
Lo dejé legible, pero si la pregunta no se cierra, jugaré más allá de la legibilidad y moveré los otros 2 parámetros dentro de la función de llamada.
Actualmente inválido , siéntase libre de ayudar a mejorarlo:
Creo que esto usa líneas en lugar de arcos.
Centrado en una cara, en lugar de un vértice.
Llamado como:
fuente