Types construits

Tuples

Le but de cette partie est de construire un dégradé de couleurs rouges, c'est à dire un ensemble de couleurs rouges allant du rouge foncé à un rouge plus clair.

Pour avoir une idée de comment s'y prendre nous allons utiliser le logiciel GIMP

Questions

  1. Ouvrir GIMP et cliquer sur la modification de la couleur du premier plan
  2. Régler R à 255,G à 0 et B à 0 à l'aide des curseurs ce qui donne le rouge primaire

  3. Il existe une autre façon de coder la couleur plus proche de la perception humaine des couleurs

    Voir ici un article de Wikipédia

    Cette fois ci on attribue trois nombres T (ou H en anglais pour Hue), S et V

    • T pour teinte un entier entre 0 et 360 degrés.(c'est le cercle des couleurs, ainsi 0 ou 360 correspond au rouge primaire)
    • S pour saturation entre 0 et 100
    • V pour valeur entre 0 et 100

    Pour bien comprendre la différence entre S et V diminuer la saturation de 10 en 10 et observer comment évoluent G et B et comment évolue la couleur actuelle

    Compléter le tableau suivant

    S10090807060
    G0
    B0

    La relation entre G et S semble linéaire aussi on cherche une fonction f reliant S à G

    Vérifier que G = f(S) = -2,55S + 255

  4. Remettre R à 255, G à 0 et B à 0 puis diminuer cette fois ci V de 10 en 10. Comment évoluent G et B et comment évolue la couleur actuelle ?

    Compléter le tableau suivant

    V10090807060
    R0

    A partir de maintenant vous devez savoir comment réaliser un dégradé

Tableaux 1D

Questions

  1. Faire une fonction Python qui retourne un tableau 1D des 20 couleurs codées en RGB de (255,0,0) jusqu'à (255,100,100)

    (On augmente les composantes G et B de 5 à chaque fois)

  2. Modifier la fonction de telle sorte que le tableau soit construit en compréhension
  3. Faire une fonction Python qui retourne un tableau 1D des 20 couleurs codées en TSV de (0,100,100) jusqu'à (0,0,100) où on diminue la saturation de 5 à chaque fois
  4. Modifier cette fonction de telle sorte que le tableau soit composé des tuples RGB correspondants des tuples TSV précédents
  5. Utiliser le programme Python suivant ici(à compléter) pour visualiser les deux séries de valeurs RGB

Règle 110 pour un automate cellulaire 1D

On va générer l'automate cellulaire qui suit la règle 110 (vu en cours) mais avec 300 cellules sur 300 jours

Questions

  1. La colonie est une liste de 300 cellules de booléens. Initialiser colonie avec 300 valeurs False et une valeur True pour la cellule 297
  2. La règle 110 est une fonction logique dont il faut compléter le tableau de vérité

    colonie[i]+ est l'état de la cellule i le jour d'après

    colonie[i-1]colonie[i]colonie[i+1]colonie[i] +
    000
    001
    010
    011
    100
    101
    110
    111

    Quelle est cette fonction ?

  3. Pour simplifier la construction de la colonie le jour suivant on va "mimer" ce qui a été fait sur feuille

    On parcourt la liste colonie pour construire dans une autre liste temp (pour temporaire) la colonie le jour suivant

    Ensuite l'instruction colonie = temp fait que la variable colonie "pointe" sur les valeurs associées à temp

    Télécharger le squelette du programme ici et le compléter

  4. Modifier le programme pour faire la règle 90

Tableaux 2D

A partir de l'image de Lena que vous pouvez télécharger ici on va construire d'autres images avec le module PIL de Python

Compléter le programme suivant

  1. Construire une image en nuances de gris correspondante à l'intensité de Rouge
  2. Construire une image en nuances de gris correspondante à l'intensité de Vert
  3. Construire une image en nuances de gris correspondante à l'intensité de Bleu

    Laquelle de ces trois images vous paraît la plus nette ?

  4. Construire l'image en nuances de gris (deux méthodes et comparer)
  5. Construire le négatif de l'image (si x est une des valeurs de r, g ou b remplacer par 255 - x)

Dictionnaires

La Tortue se déplace en suivant une suite d'instructions représentée par un mot composé des lettres "A", pour avancer d'un certain nombre de pixels pas, "G" pour tourner à gauche de 60 degrés, "D" pour tourner à droite de 120 degrés.

Par exemple si pas a pour valeur 50 pixels et si le mot est "AGADAGA" alors le déplacement de la tortue sera

On travaille à parir du squelette fractale.txt qu'on enregistre en fractale.py et que l'on complète pas à pas

Questions

  1. A l'état initial le mot est "A".Tant que la variable pas est au-dessus d'un certain SEUIL on fait la substitution A -> AGADAGA

    Ecrire à la main les 3 premiers mots

  2. Définir une fonction substitution(mot) où mot est formé uniquement des lettres A,D et G et qui retourne une chaîne de caractères où tous les "A" du mot précédent sont remplacés par "AGADAGA"

  3. Le dictionnaires actions permet d'associer à chaque lettre "A","D" ou "G" une action sur la Tortue. Compléter les fonctions tournerDroite() et tournerGauche() et remplir dans le main le dictionnaire actions
  4. Définir la fonction dessineFractale(longueur,actions) qui fait un dessin à partir du mot obtenu en répétant la substitution tant que le pas est supérieur au SEUIL

    A chaque substitution effectuée on divise le pas par 3

    Vous devez obtenir un dessin semblable à :

  5. Que faire pour obtenir le dessin suivant ?

  6. On change maintenant la règle de substitution A -> AGADADAGA

    Modifier les fonctions tournerDroite(), tournerGauche(), substitution(mot) afin d'obtenir un dessin semblable à

  7. On change maintenant la règle de substitution A -> GADAG

    Le pas n'est plus divisé par 3 mais multiplié par $\dfrac{\sqrt{2}}{2}$ (car la figure est un demi-carré)

    Modifier les fonctions tournerDroite(), tournerGauche(),substitution(mot) et dessineFractale(...) afin d'obtenir un dessin semblable à

  8. On change maintenant la règle de substitution A -> GADAG si A est de rang pair (le premier A est numéroté 0) et A -> RALAR si A est de rang impair

    Modifier les fonctions tournerDroite(), tournerGauche(),substitution(mot) et dessineFractale(...) puis compléter le dictionnaire actions avec les clés "R" et "L" et les valeurs associées afin d'obtenir un dessin semblable à