Erg::Alexandre

De {}
Aller à la navigation Aller à la recherche

game of life

Schema gol.jpeg

Étape 0 : Objectifs

Le programme est une application du jeu de la vie (Conway) à partir d'une image, dont les pixels sont interprétés comme vivants ou morts selon leur valeur de rouge. L'objectif est de pouvoir générer une animation à partir d'une image, et de gérer ensuite cette animation en fonction de paramètres propres au jeu de la vie.

Étape 1 : Règles

Langage utilisé : C++ (openFrameworks). Processus: 1. Importer une image (permet de charger une image à partir d'un chemin donné, et éventuellement de lire une séquence d'image).

2. À partir de l'image, définir un tableau de booléens (rlife_board), traduction de l'image en cellules vivantes ou morts. Cette traduction est produite en appliquant un seuil à l'image, au dessus duquel chaque pixel est défini comme mort ou vivant.

3. rlife_board évolue ensuite selon la règle du jeu de la vie : Détail: Soit i position de la cellule dans rlife_board, h la hauteur de l'image. Les cellules voisines sont les cellules de position i-1, i+1, i-h+1, i-h, i-h-1, i+h-1,i+h, i+h+1. N est le nombre de cellules vivantes parmi ces cellules voisines. Si la cellule de position i est vivante et que n > 1 et n < 4, alors la cellule de position i sera vivante à l'étape suivante. Si la cellule de position i est morte et que n = 3, alors la cellule de position i sera vivante à l'étape suivante. Dans tous les autres cas, la cellule est morte à l'étape suivante. Le passage d'une étape à une autre se fait par le biais d'un second tableau de booléens, new_board, contenant les nouvelles valeurs. Celles-ci sont ensuite recopiées dans rlife_board.

3.2 Variation sur le jeu de la vie Un second mode est ajouté au programme, appelé NewRule. Ce mode correspond à une variation des règles du jeu de la vie: Si la cellule de position i est vivante et que n > 1, alors la cellule de position i sera vivante à l'étape suivante. Si la cellule de position i est morte et que n = 3, alors la cellule de position i sera vivante à l'étape suivante. Dans tous les autres cas, la cellule est morte à l'étape suivante. Le modèle est alors en expansion et non plus orienté vers une stabilité.

4. L'évolution est alors appliquée un nombre de fois prédéfini par l'utilisateur, selon le mode choisi.

5. rlife_board est alors traduit en une nouvelle image. L'image peut être également générée à partir d'un tableau booléen "somme", dans lequel chaque cellule ayant été vivante une fois dans rlife_board est notée vivante. Autrement dit, à chaque étape: si rlife_board[i] est vivant, somme[i] est vivant ; si rlife_board[i] est mort, rien ne change.

Étape 2: Mise en place de l'interface

Chemin des images: les images doivent être mises dans le dossier "input" (elles seront exportées dans le dossier output) et renseignées selon leur nom, sans le format. Pour le moment, les fichiers sont intégrés au format jpg par défaut. Dû à l'interface, le fichier d'entrée doit avoir un nom comprenant uniquement des minuscules ou des majuscules (mais pas un mélange des deux).

Précision des paramètres:

  • valeur du seuil (threshold)
  • interprétation de l'image (if_white). Si la valeur de rouge > threshold, la cellule correspondante prend la valeur if_white, et prend la valeur contraire à if_white dans le cas contraire.
  • application des règles dites classiques ou nouvelles (newRule).
  • nombre d'étapes d'évolution (step)
  • image résultante comme somme des différentes étapes (eraseBlank)

Paramètres supplémentaires:

  • double_threshold : permet d'initialiser rlife_board non plus en fonction d'un seuil mais en fonction d'une valeur entre deux seuils.
  • first_step_classical : lorsque newRule est choisi, permet d'initialiser le tableau avec une première étape selon les règles classiques. De fait, fait éclater la forme initiale sous forme de contours.

Étape 3 : Réintégrer le jeu de la vie comme effet dans une vidéo

Modes différents d'animation, ou de réintégration du résultat dans l'image initiale :

1. À chaque image de la séquence, applique le jeu de la vie selon les paramètres définis précédemment. Le nombre d'étapes correspond soit un chiffre prédéfini, soit au numéro de l'image (par exemple: 50 étapes pour l'image n°50, etc). Cette précision correspond au paramètre "limiting_steps".

2. Switch image (non encore implémenté par une séquence) : chaque cellule définie comme vivante dans le tableau somme (sum_board) prend une couleur égale à la moyenne des cellules environnantes (rouge = moyenne du rouge, vert = moyenne du vert, bleu = mooyenne du bleu).

3. Nouvelle piste : intégrer une système de reconnaissance visuelle. L'image initiale n'est plus définie par rapport à un seuil, mais par rapport à une détection des contours (Canny).

Github Repository

https://github.com/ceathar/catalyse


anciennement : introspection assistée par ordinateur

Le programme vise à traduire, par une suite d'instructions, la façon dont j'écris mes notes. Ces "notes" ne sont pas celles prises pour se souvenir d'un cours ou d'une présentation, mais plutôt des notes personnelles, des idées posées sur le papier dans le cadre de réflexions sur des projets personnels. Leur écriture est particulière parce qu'elle est, dans une certaine mesure, cryptée : les voyelles sont généralement supprimées, les accents étant alors déplacés sur la lettre précédente ; les autres lettres sont souvent placées en exposants ou en indices, en fonction d'un ordre graphique. Le but du programme est de reproduire avec le plus de précision la façon dont ces notes sont prises. Le rendu définitif serait a priori sur support physique ; que le texte raccourci (mis en note) soit un texte long (par exemple le descriptif des instructions) ou des aphorismes (ce qui correspond au type de texte généralement raccourci) n'est pas encore décidé.

https://github.com/ceathar/shorthands