this repo has no description
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

:memo: Intro subsection 1 done

+59 -10
+1 -1
paper/LICENSE
··· 1 - main.pdf, main.typ and all .png files in this directory are licensed, unlike the rest of the repository, as such: 1 + main.pdf, main.typ, all .png files except majus.png, and all .svg files in this directory are licensed, unlike the rest of the repository, as such: 2 2 3 3 All Rights Reserved 4 4 © Gwenn Le Bihan, 2025
+29
paper/bibliography.yaml
··· 47 47 - Dirk Schulze 48 48 - Eric Willigers 49 49 publisher: W3C Editor's Draft 50 + 51 + rustwasm: 52 + title: WebAssembly — Le langage de programmation Rust 53 + type: web 54 + url: https://www.rust-lang.org/fr/what/wasm 55 + date: 2025-03-22 56 + author: Rust authors 57 + language: fr-FR 58 + 59 + gowasm: 60 + title: "Go Wiki: WebAssembly" 61 + type: web 62 + url: https://go.dev/wiki/WebAssembly 63 + date: 2025-03-22 64 + author: Go language authors 65 + 66 + planetary-folklore-period: 67 + title: Planetary Folklore Period 68 + type: web 69 + url: https://www.fondationvasarely.org/en/planetary-folklore-period/ 70 + date: 2025-03-22 71 + author: Fondation Vasarely 72 + 73 + vasarely-majus: 74 + title: MAJUS 75 + type: artwork 76 + author: Victor Vasarely 77 + date: 1964 78 + 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
··· 11 11 #set cite(style: "chicago-author-date") 12 12 #show link: underline 13 13 14 - #pad(y: 2em, 15 - figure( 16 - image("./dna-analysis-machine.png", width: 75%) 17 - ) 18 - ) 14 + #align(center, pad(y: 2em, image("./dna-analysis-machine.png", width: 75%))) 19 15 20 16 21 17 #raw(lang: "rust", ··· 30 26 31 27 == À la recherche d'une impossible énumération des formes 32 28 33 - #figure(image("./alphabetdesformes.png", width: 80%), caption: "Un “alphabet” incomplet") 29 + 30 + 31 + #grid( 32 + columns: (1fr, 1.5fr), 33 + gutter: 2em, 34 + figure(image("./majus.png", width: 100%), caption: [MAJUS @vasarely-majus]), 35 + [ 36 + 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. 34 37 35 - #figure(image("./alphabetdesformes.svg", width: 80%), caption: "Une vectorisation sur Adobe Illustrator") 38 + En particulier, un tableau, MAJUS, implémente à la fois ce concept, et est également une transcription d'une fugue de Bach. 39 + ] 40 + ) 41 + 42 + 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. 43 + 44 + #grid( 45 + columns: (1fr, 1fr), 46 + gutter: 1em, 47 + figure(image("./alphabetdesformes.png", width: 100%), caption: "Un “alphabet” incomplet"), 48 + figure(image("./alphabetdesformes.svg", width: 100%), caption: "Une vectorisation") 49 + ) 50 + 51 + 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. 52 + 53 + 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. 54 + 55 + Il est donc très facile de programmatiquement générer des images vectorielles à travers ce format. 36 56 37 57 == Une approche procédurale ? 38 58 39 - #pad(4em, grid( 59 + #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( 40 60 columns: (1fr, 1fr, 1fr), 41 61 ..( "designing-a-font", 42 62 "drone-operating-system", ··· 78 98 79 99 Mais bien évidemment, tout le code de Shapemaker, tout ses capacités de génération de formes, sont implémentées en Rust. 80 100 81 - Il existe cependant un moyen de "faire tourner du code Rust" dans un navigateur Web: la compilation vers WebAssembly (WASM) @wasm. 101 + 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 82 102 83 103 En 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: 84 104
paper/majus.png

This is a binary file and will not be displayed.