Faire un tracé (disque de Poincaré) d'une tessellation sur un plan hyperbolique, tel que:
Le programme prend quatre entrées:
1) Combien d'arêtes / polygone (trois dans cet exemple).
2) Combien se croisent à chaque sommet (sept dans cet exemple).
3) Le nombre de pas du sommet central à rendre (5 dans cet exemple, si vous regardez de près). Cela signifie qu'un sommet est inclus s'il peut être atteint en 5 étapes ou moins depuis le centre. Les arêtes sont rendues si leurs deux sommets sont inclus.
4) La résolution de l'image (un seul nombre de pixels, l'image est carrée).
La sortie doit être une image. Les bords doivent être rendus sous forme d'arcs de cercle et non de lignes (la projection de disque de Poincaré transforme les lignes en cercles). Les points n'ont pas besoin d'être rendus. Lorsque l'utilisateur met quelque chose qui n'est pas hyperbolique (c'est-à-dire 5 triangles se rencontrant à chaque sommet), le programme n'a pas à fonctionner correctement. C'est le code-golf, donc la réponse la plus courte l'emporte.
la source
Réponses:
Mathematica, 2535 octets
Tiré d' ici (d'où la raison pour laquelle c'est un wiki communautaire). Pas vraiment golfé. Voir le lien fourni pour l'explication de l'auteur sur son code.
De plus, je ne suis pas un expert de Mathematica, mais je parie que Martin pourrait faire des merveilles sur la longueur du code. Je ne comprends même pas les mathématiques derrière ça.
Je l'ai laissé lisible, mais si la question ne se ferme pas, je vais la jouer au-delà de la lisibilité et déplacer les 2 autres paramètres à l'intérieur de la fonction d'appel.
Actuellement invalide , n'hésitez pas à contribuer à son amélioration:
Je pense que cela utilise des lignes plutôt que des arcs.
Centré sur un visage plutôt que sur un sommet.
Appelé comme:
la source