Fabriquer une image grâce à Python
Il est temps de revenir à Python pour fabriquer des images. Pour ce faire, observez et exécutez le programme ci-dessous.
def setup():
couleur = color(255,255,0)
size(320,240)
for y in range(240):
for x in range(320):
set(x,y,couleur)
def draw():
pass
Complément : Explications
Nous construisons deux boucles : la première qui permet de parcourir toutes les lignes du canevas et la seconde qui permet de parcourir toutes les colonnes. Grâce à ces deux boucles, nous pouvons atteindre chaque pixel du canevas.
la variable couleur contient la couleur correspondant à un niveau de rouge et de vert à 255 et pas de bleu. Par synthèse additive, cela correspond à la couleur jaune.
Enfin, nous colorions le pixel aux coordonnées (x,y) avec couleur par l'instruction set(x,y,couleur)
Exercice Im1 : Le dégradé
Écrivez un programme permettant de réaliser un dégradé horizontal du jaune vers le blanc comme indiqué sur la figure ci-dessous.

Indication : Reprenez le programme précédent. Vous allez devoir modifier la variable couleur afin d'ajouter du bleu au fur à mesure que l'abscisse augmente. Rappelez-vous que chaque canal de couleur est codé de 0 à 255.
Exercice Im2 : L'image aléatoire
Rappel : Nous avons vu la fonction randint(valeur_min, valeur_max) de la librairie random qui permet de renvoyer un nombre entier aléatoire entre deux bornes. Pour utiliser cette fonction, le programme doit commencer par from random import randint()
Votre mission consiste à présent à utiliser, pour chaque pixel, cette fonction randint() pour fabriquer une image totalement aléatoire. Cela devra ressembler à ceci :

Exercice Im3 : La télé en panne
Dans cet exercice, vous allez fabriquer une image aléatoire animée comme illustré ci-dessous.
Chaque pixel sera ou bien tout noir, ou bien tout blanc.

Exemple : Un joli dégradé
Reprenons l'exemple du dégradé. Nous pouvons introduire des fonctions plus sophistiquées pour calculer la couleur de chaque pixel. Etudiez l'exemple ci-dessous et exécutez-le.
def setup():
size(255,255)
for y in range(255):
for x in range(255):
couleur = color(255-x,255-y,(x+y)//2)
set(x,y,couleur)
def draw():
pass
Peut-on faire un disque rempli avec ce dégradé ?
Qu'est-ce qu'un disque ? c'est l'ensemble de tous les points situés à une distance inférieure au rayon du centre de ce disque.
Il nous faut donc une fonction distance !
celle-ci va prendre en paramètres 4 nombres qui sont les coordonnées de deux points (xA,yA,xB,yB)
retourner la distance AB qui se calcule comme vous le savez par la formule \(AB=\sqrt{(xB-xA)^2+(yB-yA)^2}\)
en python, le carré d'un nombre se calcule au moyen de la fonction sq(), et la racine, avec sqrt()
Étudiez la fonction suivante :
def distance(xA,yA,xB,yB):
AB=sqrt(sq(xB-xA)+sq(yB-yA))
return AB
A présent, nous pouvons tracer notre disque centré sur les coordonnées (50,200) et de rayon 30 pixels.
Recopiez et exécutez le code ci-dessous. Vous n'oublierez pas d'inclure la fonction distance que nous venons d'écrire !
def distance(xA,yA,xB,yB):
AB=sqrt(sq(xB-xA)+sq(yB-yA))
return AB
def setup():
size(255,255)
for y in range(255):
for x in range(255):
if distance(x,y,50,200)<30:
couleur = color(255-x,255-y,(x+y)//2)
else:
couleur=color(0,0,0)
set(x,y,couleur)
def draw():
pass
Exercice Im4 : Suivez la souris
Dans cet exercice, vous allez reprendre l'idée du programme précédent en affichant un disque rempli avec le même dégradé de couleur, mais cette fois-ci, le centre du cercle se déplacera en permanence la souris.
Indication : Rappelez-vous que les coordonnées de la souris sont accessibles dans les variables mouseX et mouseY