Comments on Encore de jolies images quasipériodiques

Ruxor (2018-05-05T10:59:59Z)

@sbi:

• Pour chaque domaine fini du plan, mon système n'a qu'un nombre fini de configurations ; par contre, si on regarde le plan tout entier, l'ensemble des instants où la configuration change est dense dans ℝ. Mais mon script ne se préoccupe pas de faire les changements minimaux précisément aux bons moments : il attend « un certain temps » (déterminé par la rapidité du navigateur) et recalcule l'image pour ce temps-là.

• Je ne sais pas bien si mon système vérifie des règles d'alignement des losanges, ni lesquelles. (Le truc est qu'il est donné par une construction explicite, alors que les pavages de Penrose sont donnés par des contraintes à satisfaire. Ce n'est pas évident de savoir si une construction explicite vérifie des contraintes… ni ce que ça veut dire exactement.) D'un côté, il est impossible que mon système ne génère, sur une une grande région, que des losanges d'un certain type, donc ce n'est pas juste un pavage quelconque par des losanges. De l'autre, il ne vérifie pas les contraintes d'alignement du pavage de Penrose pentagonal :

• Dans le cas pentagonal (lorsque seven=5, donc, où il n'y a que deux types de losanges), le système que j'utilise peut et va générer des points où dix losanges fins se rencontrent. Ces points ne sont pas possibles (=ne vérifient pas les contraintes) dans le pavage de Penrose pentagonal par des losanges avec contraintes. On peut cependant ajouter une restriction à la construction que j'utilise, qui sera vérifiée à des temps particuliers, qui donne cette contrainte, et c'est ça que fait l'article de de Bruijn dont je me suis inspiré. Lorsque seven=7 je ne sais pas du tout si la construction que j'utilise a une quelconque propriété mathématique intéressante à part « être jolie ».

sbi (2018-05-05T07:59:31Z)

Avant/après: c'est ça. Avant/après un changement dans l'image. Tu expliques que
les animations viennent du temps; se pose la question de savoir s'il y a un
nombre fini d'images possibles (ou, dans ton cas discrétisé, combien)? Peut-être
un peu plus qu'un bouton "retour arrière", des boutons > et < comme sur les
lecteurs de vidéos.

Les règles de disposition je les vois ici:

https://fr.wikipedia.org/wiki/Pavage_de_Penrose#Pavage_avec_des_losanges_(pavage_de_type_3)

mais je ne comprends pas bien si ton choix de trois losanges est soumis lui
aussi à des "règles d'alignement". Cette image en parle, et on comprend
intuitivement on la voyant qu'elle est "moche":

https://en.wikipedia.org/wiki/File:Variable_penrose_tiling.svg

(mais elle n'a que deux types de losanges elle aussi).

et je me rends compte que ce paragraphe répond à mes questions:

* la plupart des configurations finies sont une impasse ("se peindre dans un coin")
(ah, je vois que cela existe au Québec sous une forme un peu différente)

* c'est difficile de savoir comment croître sans aboutir à une impasse

…c'est pourquoi ta méthode est sans doute intéressante (se pose maintenant la
question de savoir si toutes les configurations finies non impassogènes s'y
trouvent).

Si j'utilise comme unité d'angle 2pi/14, il y a les losanges d'angles 1/6, 2/5,
3/4 (et un tour fait 14). On peut donc avoir 14 losanges se rencontrant en un
point, ou 7 (ce qu'on voit parfois chez toi à l'origine). Je ne sais pas si
quand tu parles de 10 losanges fins, tu parles d'une valeur de seven égale à 5
ou autre chose.

JML (2018-05-05T02:17:02Z)

Chouette, des nouvelles colorations !
« je ne sais pas bien comment on fait pour trouver effectivement de tels points » Ben on utilise ton programme… pas en mode quadrillé.
« je vais peut-être quand même me sortir les doigts du c… » ah t'as besoin des deux mains pour programmer ça !

Ruxor (2018-05-04T14:52:03Z)

@RRt: Ah oui, d'accord. Là aussi, j'ai un peu la flemme, mais au moins sous Firefox, on peut faire clic droit sur l'image pour ouvrir un menu contextuel, et control-clic sur « view image » pour ouvrir l'image dans un nouvel onglet (qui aura une URL en « blob: »), ensuite on peut facilement en comparer deux pour voir ce qui a changé.

RRt (2018-05-04T13:56:56Z)

@Ruxor : je crois que la comparaison avant/après dont parle sbi consiste à comparer les différences entre deux images successives. Il faudrait donc faire un bouton "retour arrière" en plus du bouton "pause", en quelque sorte.

Ruxor (2018-05-04T13:47:11Z)

@sbi: Quelques éclaircissements :

• Les modifications que j'ai faites au fur et à mesure ne font qu'ajouter de nouvelles options d'affichage (modes de coloriage supplémentaires, possibilité de changer l'échelle et de se déplacer) : celles qui existaient déjà n'ont jamais été changées, donc il n'y a pas de comparaison avant/après à faire.

• La construction est déterministe au sens où tout le monde voit la même chose au même moment (modulo le fait que les mises à jour de l'image sont plus ou moins fréquentes selon la rapidité du navigateur, pour ne pas surcharger le processeur). Si ta question est de savoir où le paramètre temps intervient dans la description que j'ai faite, c'est dans le décalage par rapport à l'origine des sept familles de droites constituant l'heptagrille (il faut donc imaginer qu'il y a sept familles de droites parallèles régulièrement espacées, chacune se déplaçant à vitesse constante perpendiculairement à sa direction commune — comme une onde plane si on veut — tout en préservant la symétrie d'ordre 7 par rapport à l'origine).

• Je ne comprends pas bien ta question sur les règles à respecter, mais je devrais sans doute préciser que ce que je dessine n'est pas précisément un pavage de Penrose, même si c'est quelque chose de proche. Je suis parti d'une construction de pavages de Penrose (à symétrie pentagonale — je ne sais pas si ceci est un pléonasme) que j'ai trouvée dans la littérature mathématique, j'ai supprimé une contrainte de la construction (essentiellement, de Bruijn impose que la somme des déplacements des cinq familles de droite dans sa pentagrille soit nulle, et la conséquence essentielle est que ça empêche les sommets où dix losanges « étroits » se rencontrent), et j'ai trivialement généralisé à d'autres symétries que pentagonale. Mon but était juste de faire quelque chose de joli, je ne sais pas si ça a des propriétés théoriques très intéressantes (même si la construction elle-même est élégante). Les pavages de Penrose ne sont pas juste quasipériodiques, mais les pièces du pavage ont la propriété de ne pouvoir donner que des pavages quasipériodiques (soit par leur forme elle-même soit par des contraintes supplémentaires sur leur agencement) ; ce que je trace est quasipériodique mais il n'y a pas de contrainte supplémentaire de ce genre.

• Pour la valeur de seven, je répète que le principal problème est que c'est délicat de décider ce qu'il faut recalculer quand on la modifie. Mais bon, à force que tout le monde insiste, je vais peut-être quand même me sortir les doigts du c**…

sbi (2018-05-04T05:39:48Z)

Et tant qu'on y est, un sélecteur pour changer la valeur de seven (le
commentaire du code précise les valeurs intéressantes), pour nous éviter de
refaire tout ça en local O:-)

sbi (2018-05-04T05:36:51Z)

Les mises à jour régulières me stressent: j'ai envie d'afficher successivement
les images avant/après pour mieux voir et comprendre ce qui a changé et ce qui
est resté stable… Ce serait difficile d'ajouter encore un contrôle pour faire
ce genre de choses?

Sur le fond: je sais que la réponse est dans ton code, mais je suis un peu
surpris que ta construction ne soit pas déterministe, peux-tu expliquer
pourquoi elle ne l'est pas et le nombre de choix possibles?

En me renseignant sur le sujet je redécouvre qu'un pavage du plan par ces
objets doit respecter des règles de jointage/aboutement pour être "légal", mais
je ne suis pas sûr d'avoir compris pourquoi (ni si on est sûr de se "peindre
dans un coin" si on pave une surface sans les respecter).

Bref, un billet plus théorique sur le sujet serait pour moi bienvenu! :-)

Ruxor (2018-05-02T12:22:14Z)

Et hop, j'ai ajouté encore trois nouveaux jeux de couleurs, que je crois que je préfère encore à tous ceux que j'avais jusqu'à présent. (J'avais pourtant résolu de ne plus toucher à ce code…)

@JML: Il y a effectivement des points où on trouve une symétrie locale : ce sont les (x,y) tels que (2/7)·(x·cos(2kπ/7)+y·sin(2kπ/7)) soit proche d'un entier pour chaque k (entre 0 et 6). (Sachant que dans mon affichage par défaut, la coordonnée x est verticale et va de −32 à +32, tandis que la coordonnée y est horizontale et va de −43 à +43 environ.) Ceci étant, je ne sais pas bien comment on fait pour trouver effectivement de tels points (c'est une question d'approximation diophantienne simultanée ; je sais qu'on doit pouvoir utiliser l'algorithme LLL d'une manière ou d'une autre, mais je n'ai jamais regardé ces questions-là de près).

JML (2018-04-27T23:11:01Z)

Chez moi ça défile d'autant moins vite qu'on voit une plus grande partie du plan. J'ai un doute sur les 10 min…
Tu dis que tu encourages à lire ton code mais le commentaire est trompeur puisqu'il décourage d'aller au-delà de 9 ! Ou alors tu encourages à lire ton code ET à avoir l'esprit de contradiction :) Tiens d'ailleurs j'ai pas essayé 0, -1 ni 7,5. Hum. (Je pense à la blague : Un ingénieur qualité va dans un bar. Il commande une bière. Il commande deux bières. Il commande 0 bière. Il commande 999999999999 bières. Il commande -1 bière. Il commande atwefs bières. Il commande…)
C'est vraiment super de pouvoir décaler le centre. J'ai perdu la notion du temps devant un motif en étoile (7 losanges allongés) qui était quasi-stable. Il y a des points privilégiés pour les symétries locales ? Même quand l'étoile était perturbée son voisinage avait une symétrie.

Il y a un potentiel pour une app qui dépasse largement ton lectorat habituel.
Il faudrait pouvoir tweeter un lien qui amène directement à l'image avec les paramètres sélectionnés.

Ilia (2018-04-26T23:05:41Z)

Pour l'harmonie du tout, il faudrait alors régler la taille de la fenêtre à un millifurlong ;-)

Ruxor (2018-04-26T21:52:11Z)

Sinon, c'est embarrassant, j'avais écrit que l'animation était périodique d'une semaine, mais en fait j'avais fait une erreur d'un facteur 1000 parce que j'avais oublié que JavaScript renvoyait le temps en millisecondes et pas en secondes. Donc en fait mon animation est périodique de période une millisemaine, c'est-à-dire 10 minutes et 04.8 secondes. Maintenant que c'est fait, je vais laisser comme ça…

Ruxor (2018-04-26T21:24:17Z)

@DH: Pour jouer avec le code, le mieux est de sauvegarder la page (cliquer sur le permalien d'abord, pour avoir juste l'entrée en question), éditer le fichier HTML (il est complet, le JavaScript est intégré dedans), et l'ouvrir dans un navigateur avec une URL en file:///machin/truc.html — normalement rien dans la page ne dépend de son emplacement.

DH (2018-04-26T20:29:33Z)

Justement, j'ai essayé de modifier le code avec l'inspecteur Javascript de Chrome, mais pas moyen de lui faire prendre en compte (si je veux recharger la page, ça écrase mes modifications locales, et j'ai l'impression que la fonction principale est lue une fois pour toutes au début de l'exécution de la page).

Ruxor (2018-04-26T15:30:26Z)

@JML: Je sais que modifier la valeur de "seven" fonctionne, mais ce qui est pénible c'est de savoir quoi réinitialiser si on la modifie, et c'est essentiellement par flemme de retrouver ça que je n'ai pas mis de menu déroulant. (Et puis, il faut bien laisser un petit cadeau aux gens qui font l'effort d'aller lire le code !)

vicnent (2018-04-26T13:12:31Z)

good job ! magnifique !

JML (2018-04-26T12:29:37Z)

Magnifique ! (L'entrée précédente était bien aussi)

Les couleurs supportent mal la vision d'une trop grande partie du plan à mon goût parce que ça fait ressortir certains axes mais pas d'autres, ce qui arrive beaucoup moins avec le gris, mais à zoom plus élevé ça fait souvent de jolis dessins psychédéliques. (Je suggère de parler en zoom plutôt qu'en échelle.)

C'est une très bonne idée d'avoir ajouté l'option axes qui permet de comprendrouiller ce qui se passe.

Pourquoi n'as-tu pas mis un menu déroulant pour seven ? Plein de valeurs donnent de beaux résultats. Même 37 à petite échelle avec les axes produit des résultats inattendus. Que ça marche atteste d'ailleurs de la robustesse de ton code.
Beau travail !

Ruxor (2018-04-25T15:07:13Z)

@Fab: Ma préférence pour les teintes de gris est purement esthétique (mathématiquement, de toute façon, toute l'information est déjà contenue dans l'emplacement et la forme des losanges). Je trouve ça plus sobre, et surtout, ça permet de mieux voir la symétrie d'ordre 7 que le jeu de couleurs cache.

Allez, pour faire bon poids, j'ai ajouté encore un système de couleurs, qui utilise des teintes de gris sauf les axes centraux qui sont mis en lumière.

mummy (2018-04-25T14:24:26Z)

C'est assez fascinant et hypnotique, même si je n'ai strictement aucune idée de ce qui se passe !!!

Fab (2018-04-25T14:17:41Z)

Du grand art, mathématiquement et esthétiquement parlant, je suis fan !

Tiens, pour quelle raison préfères-tu la version en teintes de gris à la version couleurs (ou mixte, très jolie aussi), pour des raison d'"interprétation mathématique" ou parce-que tu trouves ça plus joli ?

Et tiens(bis), je ne distingue que trois nuances de gris (très clair, moyen et très foncé) contre 7 couleurs, et à vue de nez 21 (peut-être plus) teintes en version mixte (qui serait donc la plus riche a priori)…

Ruxor (2018-04-25T13:41:55Z)

Et puis tant qu'à faire, j'ai aussi ajouter une option pour changer l'échelle.

Ruxor (2018-04-25T13:28:39Z)

@Typhon: Vos désirs sont des ordres pour moi. 😁 J'ai ajouté une option pour passer en couleurs (la couleur étant choisie d'après l'orientation du losange alors que la teinte de gris l'est d'après sa forme). Je persiste à préférer nettement la version en teintes de gris.

Onde (2018-04-25T13:12:51Z)

C'est trop beau, de même que le film de Fourier associé à l'icosaèdre !

Typhon (2018-04-25T10:58:42Z)

Ce serait plus joli avec des couleurs. Je ne sais pas s'il y a facilement moyen de créer pour cette image un schéma de colorisation qui aurait un sens mathématiquement intéressant, mais en tout cas ce sera plus joli.


You can post a comment using the following fields:
Name or nick (mandatory):
Web site URL (optional):
Email address (optional, will not appear):
Identifier phrase (optional, see below):
Attempt to remember the values above?
The comment itself (mandatory):

Optional message for moderator (hidden to others):

Spam protection: please enter below the following signs in reverse order: 2bc429


Recent comments