Bonjour, je suis à la recherche d'un sketch d'exemple Processing que je ne parviens pas à retrouver. Si quelqu'un trouve à tout hasard le sketch en question avec ma description ça m'aiderait beaucoup!
Le sketch débute avec une grosse ellipse, qui correspond à un pixel global de l'image (faisant surement intervenir get()). Puis, le survole de la souris sur cette ellipse permet de la diviser en quatre autres ellipses augmentant ainsi au fur et à mesure de l'intervention de la souris sur les ellipses la résolution de l'image que l'on finit par reconnaitre.
Merci beaucoup pour votre aide !
Hors ligne
Bonsoir,
C'est surement cela que tu souhaites faire :
ArrayList<Cellule> cellules; PImage photo, fond; void setup() { size(512, 512); cellules = new ArrayList<Cellule>(); photo = loadImage("data/Elephant.jpg"); fond = createImage(512, 512, RGB); fond.copy(photo, 0, 0, photo.height, photo.height, 0, 0, 512, 512); fond.loadPixels(); int rouge = 0; int vert = 0; int bleu = 0; for (int i = 0; i < fond.pixels.length; i++) { rouge += fond.pixels[i] >> 16 & 0xFF; vert += fond.pixels[i] >> 8 & 0xFF; bleu += fond.pixels[i] & 0xFF; } color nCouleur = color(rouge / fond.pixels.length, vert / fond.pixels.length, bleu / fond.pixels.length); cellules.add(new Cellule(0, 0, 512, 512, nCouleur, 0)); noStroke(); } void draw() { background(255); for (Cellule cel : cellules) { cel.dessine(); } //image(fond, 0, 0); } class Cellule { int largeur, hauteur; int x, y; color couleur; int profondeur; Cellule(int _x, int _y, int _largeur, int _hauteur, color _couleur, int _profondeur) { x = _x; y = _y; largeur = _largeur; hauteur = _hauteur; couleur = _couleur; profondeur = _profondeur; } void dessine() { fill(couleur); ellipse(x + largeur /2, y + hauteur / 2, largeur, hauteur); //rect(x, y, largeur, hauteur); } boolean souris(int sourisX, int sourisY) { return (sqrt(sq(sourisX - (x + largeur / 2)) + sq(sourisY - (y +largeur / 2))) < largeur / 2); //return ((sourisX > x) && (sourisX < x + largeur) && (sourisY > y) && (sourisY < y + hauteur)); } } void mouseMoved() { for (Cellule cel : cellules) { if (cel.souris(mouseX, mouseY) && cel.profondeur < 7) { int rouge = 0; int vert = 0; int bleu = 0; int taille = cel.largeur / 2 * cel.hauteur / 2; for (int i = cel.x; i < cel.x + cel.largeur / 2; i++) { for (int j = cel.y; j < cel.y + cel.hauteur / 2; j++) { rouge += fond.pixels[j * width + i] >> 16 & 0xFF; vert += fond.pixels[j * width + i] >> 8 & 0xFF; bleu += fond.pixels[j * width + i] & 0xFF; } } color col = color(rouge / taille, vert / taille, bleu / taille); cellules.add(new Cellule(cel.x, cel.y, cel.largeur / 2, cel.hauteur / 2, col, cel.profondeur + 1)); rouge = 0; vert = 0; bleu = 0; for (int i = cel.x + cel.largeur / 2; i < cel.x + cel.largeur; i++) { for (int j = cel.y; j < cel.y + cel.hauteur / 2; j++) { rouge += fond.pixels[j * width + i] >> 16 & 0xFF; vert += fond.pixels[j * width + i] >> 8 & 0xFF; bleu += fond.pixels[j * width + i] & 0xFF; } } col = color(rouge / taille, vert / taille, bleu / taille); cellules.add(new Cellule(cel.x + cel.largeur / 2, cel.y, cel.largeur / 2, cel.hauteur / 2, col, cel.profondeur + 1)); rouge = 0; vert = 0; bleu = 0; for (int i = cel.x; i < cel.x + cel.largeur / 2; i++) { for (int j = cel.y + cel.hauteur / 2; j < cel.y + cel.hauteur; j++) { rouge += fond.pixels[j * width + i] >> 16 & 0xFF; vert += fond.pixels[j * width + i] >> 8 & 0xFF; bleu += fond.pixels[j * width + i] & 0xFF; } } col = color(rouge / taille, vert / taille, bleu / taille); cellules.add(new Cellule(cel.x, cel.y + cel.hauteur / 2, cel.largeur / 2, cel.hauteur / 2, col, cel.profondeur + 1)); rouge = 0; vert = 0; bleu = 0; for (int i = cel.x + cel.largeur / 2; i < cel.x + cel.largeur; i++) { for (int j = cel.y + cel.hauteur / 2; j < cel.y + cel.hauteur; j++) { rouge += fond.pixels[j * width + i] >> 16 & 0xFF; vert += fond.pixels[j * width + i] >> 8 & 0xFF; bleu += fond.pixels[j * width + i] & 0xFF; } } col = color(rouge / taille, vert / taille, bleu / taille); cellules.add(new Cellule(cel.x + cel.largeur / 2, cel.y + cel.hauteur / 2, cel.largeur / 2, cel.hauteur / 2, col, cel.profondeur + 1)); cellules.remove(cel); break; } } }
Avec comme image :
Pour quel projet souhaites-tu l'utiliser ?
Hors ligne
Pages: 1