Ah, super !

par Rémy @, jeudi 12 janvier 2017, 13:09 (il y a 2873 jours) @ essim

Les couleurs sont tirées au hasard par une algorithme savant de ma composition, que je te-vous révèle ici parce que c'est vous :
- Préparer deux teintes au hasard en faisant attention à ce qu'elles soient compatibles.
- À chaque couleur à tirer, choisir avec 80% de probabilité la première teinte préparée, dans les 20 autres % des cas la seconde.
- Donner une saturation au hasard entre 0 et 100% et une luminosité au hasard entre 0 et 100%.
- De temps en temps, promouvoir la seconde teinte première et en tirer une nouvelle au hasard pour la seconder, en faisant attention à ce qu'elle soit compatible.

En principe, les deux points difficiles là-dedans sont "teintes compatibles" et "de temps en temps".

Pour "compatibles", les règles c'est :
- Je tiens à n'exclure aucune teinte a priori.
- Les teintes entre rouge (0º) et jaune (30º) (ça couvre aussi tous les bruns, ocres, beiges, et tous les roses où n'intervient pas de bleu) sont compatibles avec toutes les autres et peuvent volontiers apparaître souvent (c'est la zone du spectre où notre œil est le plus sensible, c'est là qu'on détecte le plus de nuances, du coup cette règle-là est une vérité universelle).
- Une teinte où la composante verte est plus forte que les deux autres (un vert) n'est pas compatible avec une teinte où la composante verte est plus faible que les deux autres (un violet). Ça c'est un choix personnel de moi, l'artiste.

"De temps en temps", c'est plus compliqué.
En principe, il faudrait veiller à ce que la nouvelle teinte tirée soit compatible avec toutes celles qui se trouvent sur l'écran, ou au moins avec celles à côté de qui elle se placera. Pour des raisons de simplicité, je ne mémorise pas toute cette information, et je me contente de vérifier que la nouvelle teinte est compatible avec l'autre teinte en activité, éventuellement aussi avec celle qu'elle va remplacer. Si on change trop souvent de teintes, il en reste d'anciennes qui ne seront a priori pas compatibles avec la nouvelle, et ce sera moche et trop bariolé. D'un autre côté, si on change trop peu souvent de teintes, l'image reste très longtemps de deux couleurs, et ça devient ennuyeux. L'astuce consiste à évaluer combien de temps chaque couleur reste sur l'écran et à faire augmenter la probabilité de changement au fur et à mesure que les teintes anciennes disparaissent. Dans le cas de ce programme en bandelettes qui défilent, ça n'est pas très difficile, il faut juste que je m'y colle.

Ça ce sont les principes. Mais dans ce programme en bandelettes intervient une difficulté spéciale et individuelle : les dégradés trop abrupts forment des lignes verticales qui perturbent la forme. Le truc, c'est que deux bandelettes qui se séparent ou qui se rassemblent ont forcément la même couleur à l'extrémité où elles n'en forment qu'une, donc si on veut des couleurs différentes sur l'écran, il faut qu'elles en changent entre ces endroits, qui sont souvent proches les uns des autres : on n'a pas assez de place pour faire un dégradé lent. Une solution serait que les couleurs restent proches les unes des autres, pour qu'un dégradé rapide ne choque pas. Mais c'est tout de suite moins joli et pas assez bariolé (j'ai essayé). Les recherches continuent... À suivre !


En attendant, hier j'ai programmé une œuvrette en Javascript au lieu de l'habituel Java. Dites-moi si vous la voyez bouger et ce qu'elle vous évoque !
Cascade

Fil complet: