···7373 "weaving").map(artwork => grid.cell(image("../examples/gallery/" + artwork + ".svg", width: 100%)) )
7474))
75757676+L'étape prochaine dans cette démarche était évidemment donc de générer procéduralement ces formes. Afin d'avoir des résultats intéréssants, et devant l'évidente absurdité d'un projet d'énumération _complète_ de _toutes les formes_, on préfèrera des générations procédurales dites "semi-aléatoires", dans le sens où certains aspects du résultat final sont laissés à l'aléatoire, comme le placement des formes élémentaires, tandis que de d'autres, comme la palette de couleurs, sont des décisions de l'artiste.
7777+7878+Le modèle initialement choisi dans les premières ébauches de Shapemaker est le suivant:
7979+8080+#figure(
8181+ caption: "Vocabulaire visuel des premières ébauches: grille de placement à 9 points, formes et couleurs",
8282+ grid(
8383+ columns: (1fr, 1fr, 1fr),
8484+ gutter:3em,
8585+ grid.cell(
8686+ align: center,
8787+ grid(
8888+ columns: (2em, 2em, 2em),
8989+ rows: (2em, 2em, 2em),
9090+ gutter: 1em,
9191+ ..range(9).map(it => circle(radius: 0.2em, fill: black))
9292+ )
9393+ ),
9494+ grid.cell(image("./shapeshed.svg"), align: center),
9595+ grid.cell(image("./colorshed.svg"), align: center)
9696+ )
9797+)
9898+9999+L'idée est donc de limiter la part d'aléatoire à des choix dans des ensembles prédéfinis d'éléments, que ce soit dans le choix des couleurs, des placements ou des formes élémentaires.
100100+101101+Cette méthode amène donc l'artiste à définir, d'une certaine manière, son _propre langage visuel_, où les éléments de langage sont les couleurs, formes, placements et post-traitements (flou, rotations, etc) utilisables.
102102+103103+La part aléatoire engendre _une_ infinité réduite d'œuvres, qui naissent dans les confins du langage visuel devisé par l'artiste.
104104+76105== Excursion dans le monde physique
7710678107=== Interprétation collective