···4747 - Dirk Schulze
4848 - Eric Willigers
4949 publisher: W3C Editor's Draft
5050+5151+rustwasm:
5252+ title: WebAssembly — Le langage de programmation Rust
5353+ type: web
5454+ url: https://www.rust-lang.org/fr/what/wasm
5555+ date: 2025-03-22
5656+ author: Rust authors
5757+ language: fr-FR
5858+5959+gowasm:
6060+ title: "Go Wiki: WebAssembly"
6161+ type: web
6262+ url: https://go.dev/wiki/WebAssembly
6363+ date: 2025-03-22
6464+ author: Go language authors
6565+6666+planetary-folklore-period:
6767+ title: Planetary Folklore Period
6868+ type: web
6969+ url: https://www.fondationvasarely.org/en/planetary-folklore-period/
7070+ date: 2025-03-22
7171+ author: Fondation Vasarely
7272+7373+vasarely-majus:
7474+ title: MAJUS
7575+ type: artwork
7676+ author: Victor Vasarely
7777+ date: 1964
7878+ location: Alvéole 5, Fondation Vasarely, 1 avenue Marcel Pagnol, 13090 Aix-en-Provence, France
paper/main.pdf
This is a binary file and will not be displayed.
+29-9
paper/main.typ
···1111#set cite(style: "chicago-author-date")
1212#show link: underline
13131414-#pad(y: 2em,
1515- figure(
1616- image("./dna-analysis-machine.png", width: 75%)
1717- )
1818-)
1414+#align(center, pad(y: 2em, image("./dna-analysis-machine.png", width: 75%)))
191520162117#raw(lang: "rust",
···30263127== À la recherche d'une impossible énumération des formes
32283333-#figure(image("./alphabetdesformes.png", width: 80%), caption: "Un “alphabet” incomplet")
2929+3030+3131+#grid(
3232+ columns: (1fr, 1.5fr),
3333+ gutter: 2em,
3434+ figure(image("./majus.png", width: 100%), caption: [MAJUS @vasarely-majus]),
3535+ [
3636+ Fascinée depuis longtemps par les œuvres du plasticien et artiste Op-Art _Victor Vasarely_, j'ai été saisie par une de ses périodes, la période "Planetary Folklore", pendant laquelle il a expérimenté à travers plusieurs œuvres autour de l'idée d'un alphabet universel employant des séries combinaisons simples de formes et couleurs. D'apparence très simple, ces combinaisons sont d'une manières assez fascinantes uniques, d'où l'idée d'alphabet @planetary-folklore-period.
34373535-#figure(image("./alphabetdesformes.svg", width: 80%), caption: "Une vectorisation sur Adobe Illustrator")
3838+ En particulier, un tableau, MAJUS, implémente à la fois ce concept, et est également une transcription d'une fugue de Bach.
3939+ ]
4040+)
4141+4242+Avec cette idée dans la tête, je me mets à gribouiller une ébauche d'"alphabet des formes", qui, naïvement, chercher à énumérer toutes les formes construisibles à partir de formes simples, que l'on peut superposer, pivoter et translater.
4343+4444+#grid(
4545+ columns: (1fr, 1fr),
4646+ gutter: 1em,
4747+ figure(image("./alphabetdesformes.png", width: 100%), caption: "Un “alphabet” incomplet"),
4848+ figure(image("./alphabetdesformes.svg", width: 100%), caption: "Une vectorisation")
4949+)
5050+5151+Principalement par simple intérêt esthétique, je vectorise cette page via Illustrator. Vectoriser signifie convertir une image bitmap, représentée par des pixels, en une image vectorielle, qui est décrite par une série d'instructions permettant de tracer des vecteurs (d'où le nom), leur ajouter des attributs comme des couleurs, des règles de remplissage (Even-Odd, Non-Zero, etc.), des effets de dégradés, etc.
5252+5353+Un aspect intéréssant est que, parmi les différents formats d'image vectorielles existant, le _SVG_, pour _Scalable Vector Graphics_, est indéniablement le plus populaire, et est un standard ouvert décrivant un format texte.
5454+5555+Il est donc très facile de programmatiquement générer des images vectorielles à travers ce format.
36563757== Une approche procédurale ?
38583939-#pad(4em, grid(
5959+#figure(caption: "Exemples d'œuvres résultant d'une procédure de génération semi-aléatoire, basée sur une grille de 8 “points d'ancrages”", grid(
4060 columns: (1fr, 1fr, 1fr),
4161 ..( "designing-a-font",
4262 "drone-operating-system",
···78987999Mais bien évidemment, tout le code de Shapemaker, tout ses capacités de génération de formes, sont implémentées en Rust.
801008181-Il existe cependant un moyen de "faire tourner du code Rust" dans un navigateur Web: la compilation vers WebAssembly (WASM) @wasm.
101101+Il existe cependant un moyen de "faire tourner du code Rust" dans un navigateur Web: la compilation vers WebAssembly (WASM), un langage assembleur pour le web @wasm, qui est une cible de compilation pour quelques des langages compilés plus modernes, comme Go @gowasm or Rust @rustwasm
8210283103En exportant la _crate_ shapemaker en bibliothèque Javascript via wasm-bindgen @wasmbindgen, il est donc possible d'exoser à une balise #raw("<script>", lang: "html") les fonctions de la bibliothèque, et brancher donc celles-ci à des _callbacks_ donnés par l'API WebMIDI:
84104