NOMBRES - Curiosités, théorie et usages

 

Accueil                           DicoNombre            Rubriques           Nouveautés      Édition du: 07/02/2021

Orientation générale        DicoMot Math          Atlas                   Actualités                       M'écrire

Barre de recherche          DicoCulture              Index alphabétique        Références      Brèves de Maths

      

Informatique

 

Débutants

Programmation

Programmation avec Processing

 

Glossaire

Informatique

Glossaire

Algorithme

 

 

 

INDEX

 

Informatique

 

Multimédia

 

Ordinateur

 

Index (portail)

Processing

Premiers progs

Animations

Fonctions

Manipulations

 

Sommaire de cette page

>>> Exemple: PUSH/POP

>>> Exemple: TOTO se bouge

>>> Exemple: Danse de billes sur tapis

>>> Bilan

 

 

 

 PROGRAMMATION – PROCESSING

Manipulation des zones d'images

 

Comment faire bouger des dessins (ou des images) sur la zone d'affichage sans toucher au reste de l'image.

Utilisation de la translation, de la rotation et l'outil de changement d'origine push et pop matrix ?  Comment isoler une transformation.

 

 

 

Exemple: PUSH/POP

 

Programme

void setup() {

  size(200, 200);

}

 

void draw () {

  fill(255);

  strokeWeight(2);

  line (0, 100, 200, 100);

  line (100, 0, 100, 200);

  rect (10, 10, 80, 80);

  ellipse (10, 10, 20, 20);

 

  pushMatrix();

  translate(120, 20);

  fill(0, 255, 0); 

  rect (0, 0, 50, 50);

  popMatrix();

 

  fill(255, 0, 0);

  ellipseMode(CENTER);

  ellipse(100, 100, 50, 50);

}

 

Dessin

 

 

 

But

Expérimenter les commandes pushMatrix et popMatrix qui permettent de manipuler un dessin de façon indépendante de tout le reste du dessin.

attention.png  Ne vous laissez pas impressionner par ces deux mots et pensez, qu'ici, matrix veut dire "tous les pixels" de l'image, et non matrice mathématique.

 

Programme

Le programme ne présente pas de difficulté. Il dessine deux rectangles et deux cercles.

Les deux lignes servent à repérer les axes médians de l'image.

C'est le rendu qui mérite une explication

 

Exécution

Le positionnement du premier rectangle blanc (10, 10, 80, 80) est dans le système d'axes habituel avec origine en haut à gauche.

Même chose pour le cercle blanc.

 

Entre les commandes pushMatrix et popMatrix, seuls les dessins s'y trouvant subiront les  transformations demandées (ici, translation).

En l'occurrence, l'origine des axes est momentanément déplacée par la commande translate. et le centre du rectangle vert, commandé en (0, 0), passe en (120, 20).

 

Une fois "dehors", le système d'axes reprend sa position habituelle.

Le cercle rouge commandé avec son centre en (100, 100) est bien centré en plein milieu de l'image.

 

Intérêt

Cette sorte de parenthèse de traitement permet de manipuler des éléments d'image sans modifier toute l'image.

 

 

Apprentissage des instructions

StrokeWeight

Définit l'épaisseur des traits

pushMatrix

Isole tout le traitement qui suit. Les commandes translate et rotate s'appliquent aux instructions qui suivent.

popMatrix

Marque la fin de l'isolement. Le système d'axes reprend son positionnement d'avant cet isolement.

ellipseMode

Précise la nature des paramètres de tracé. Ici, CENTER indique que (x, y, …) sont les coordonnées du centre.

 

Exemple: TOTO se bouge

Programme

 

PImage imageToto;PImage imageFete;

 

void setup() {

  size(500, 500);

  imageToto=loadImage("TotoTr.png");

  imageFete=loadImage("Fete.jpg"); 

  imageMode(CENTER);

}

void draw () {

    background(255);

    image (imageFete, 250,  200);

    image (imageToto, 100, 100);

 

    pushMatrix();

    fill(255);

    translate (mouseX, mouseY);

    image(imageToto, 0, 0);

     if (mousePressed) {

         rotate (radians (90));

         image (imageToto, 0, 100);}

    popMatrix ();

}

 

But

Expérimenter l'isolement graphique avec une image.

 

Programme

Déclaration de travail avec les images d'un personnage (Toto) dans un paysage de fête.

Dans setup, chargement des images.

Demande de positionnement de l'image par son centre en (x, y).

 

Le programme de dessin (draw) comporte deux parties:

*      partie conventionnelle avec affichage d'une image d'arrière-plan (des ballons) et du personnage Toto en haut à gauche.

*      partie sous isolement: le personnage Toto positionné selon la commande de la souris. En plus, si on appuie sur la souris, le personnage apparait couché.  

 

Image

Un simple copier-coller du programme n'est pas suffisant, il vous faut placer deux images à vous dans le répertoire où se trouve votre programme.

Vous allez sélectionner une image (comme Toto). Pour produire l'effet d'incrustation, le fond de l'image doit être transparent. Si vous ne disposez pas d'un outil pour le faire, vous pouvez demander ce traitement en ligne.

 

 

Dessins

 

 

Exécution

Le décor s'affiche: ballons et Toto en haut à gauche.

En déplaçant la souris dans le zone de dessin, Le centre de Toto suit la souris.

En appuyant sur une touche de la souris, un Toto supplémentaire fait son apparition en position couchée.

 

Apprentissage des instructions

PImage

Pour Processing Image (traitement d'image). Déclare que l'on va employer l'image indiquée.

loadImage

Téléchargement de l'image spécifiée.

ImageToto

Nom de l'image dans le programme. On aurait pu l'appeler bidule ou chose, …

TotoTr.png

Nom de l'image dans le répertoire où elle est rangée. Pour y accéder, cette image doit être copiée dans le répertoire de ce programme (là où vous avez sauvegardé ce programme).

 image (imageFete,x,y);

Affichage de l'image avec son coin haut-gauche en (x, y) ou son centre en (x, y) si le mode CENTER a été activé.

rotate (A)

rotate (radians(B))

Rotation d'un angle de A radians.

Rotation d'un angle  de B degrés.

 

 

Exemple: Danse de billes sur tapis

 

Programme

int rythme; int taille; int clic = 100;

 

void setup(){

    size (400, 400);

    background (0);

    colorMode(HSB, 100, 128, 128);

}

void draw(){

  rythme = 5 + mouseX;

  taille = 5 + mouseY/10;

  frameRate (rythme);

  background (0);

if (mousePressed) {clic = clic += 1; }

  fill (clic%100, 128, 128);

 

  for (int i = -20; i < 20; i++)  {

   for (int j = -20; j < 20; j++)  {

     pushMatrix ();

     translate (10*i + width/2, 10*j + height/2);

     if (j%5 == 0)  {translate (10, 0); }

     rotate (0.08*abs((i*j) + frameCount));

     ellipse (30, 30, taille, taille);

     popMatrix ();

  } }

}

 

 

But

Créer un tapis de cercle ondulants, grouillants avec effets sous contrôle de la souris.

 

Programme

Déclaration des variables de commande avec la souris:

*      rythme: vitesse d'ondulation,

*      taille: taille des cercles sur l'image, et

*      clic: changement de couleur au clic souris.

Sous setup: activation du mode couleur HSB qui, avec H qui définit une couleur sur le spectre complet avec une échelle de 0 à 100

Sous draw: prise en compte de ces variables selon l'état de la souris. Notamment, un appui sur la souris augmente le compteur de clics.

Le remplissage (fill) précise la valeur de H en prenant en compte la quantité de clics. Avec %100  (mod 100), la valeur restera dans l'intervalle (0, 100).

Lancement de deux boucles de balayage de l'écran (comme en télévision) qui placera un cercle à chaque point désigné.

Sous push/pop matrix, translation et rotation sont activées pour créer un effet d'ondulation sur toute l'image. Vous pouvez tester leur effet en retirant ces deux instructions … (en les précédant de // , signe de commentaire)

Pour modifier les effets vous pouvez ajuster les paramètres comme (j%5==0 en j%10==0) ou (rotate (0.08) en rotate (0.02), etc.

 

 

Dessins

 

 

 

Exécution

Les bulles dansent en permanence.

Effets variés en déplaçant la souris dans l'image et en cliquant sur des boutons de la souris.

 

 

Apprentissage des instructions

HSB

Pour Hue / Saturation / Brightness = Nuances, Saturation et Brillance.

ModeColor(HSB)

Pratique pour faire des calculs sur la couleur.

 

 

 

Bilan

Avec ces exemples, nous sommes armés pour travailler localement sur des morceaux d'images.

Nous avons également comment introduire des images toutes faites parmi nos dessins.

Il reste encore d'autres sujets qui mériteraient explications: utilisation des tableaux, programmation orientée objet (POO), passage au 3D …

Ces quelques pages visaient à se mettre le pied à l'étrier en se divertissant. Les plus passionnés pourront progresser en recourant aux moyens disponibles sur Internet.

Si vous n'êtes pas un programmeur aguerri, vous aurez à passer un peu de temps pour apprivoiser ce langage comme c'est le cas pour les autres langages. Chacun d'eux recèle des subtilités qui seront découvertes avec la pratique.

 

 

 

Sur ce site

Retour

*         Processing – Première approche

*         Processing – Premiers programmes

*         ProgrammationIndex  (Maple, Python, tableur …)

Suite

*            Exemples d'utilisation des fonctions – Récursivité

Voir

*         Python – Approche pour débutant

*         Scratch – Apprendre à programmer simplement

*         Historique de l’aventure informatique

*         Maple – Apprendre à programmer (maths)

Cette page

http://villemin.gerard.free.fr/aInforma/PROCESNG/Manipula.htm

 

Externe

Processing

*           Tutoriel: Processing – C'est un exemple; il en existe bien d'autres

*           OpenProcessingNombreuses réalisations avec Processing

Livres

*           {Processing} // S'initier à la programmation créative – Jean-Michel Géridan et Jean-Noël Lafargue – Dunod – 2016  - Très clair pour tout connaitre dans un but de création artistique.

*           À la conquête des maths avec Python (et Processing) – Peter Farell – Eyrolles – 2020Lui aussi très abordable et complet avec orientation vers des pratiques nécessitant des calculs mathématiques