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