Salut,
Novice en processing, je viens quémander un peu d'aide car ce problème commence à me rendre fou
Alors voila, dans mon programme j'ai une image composée de pixels de couleurs aléatoire. Je peux agrandir ou réduire cette image, ce qui change le nombre de pixels (et donc la taille de ces pixels)
J'aimerais qu'au survol de la souris, le pixel change de couleur de facon aléatoire (genre random (255)).
J'ai bien lu ce sujet : http://codelab.fr/147 mais je ne comprends toujours pas comment faire le rapprochement entre les coordonnées de la souris et le numéro du pixel.
Merci d'avance
Dernière modification par Fluctuhon (2011-01-22 23:42:49)
Hors ligne
hello,
à partir de la proposition de Shiffman, qui dit ceci :
LOCATION = X + Y*WIDTH
donc :
for(int x=0; x<width; x++){ for(int y=0; y<height; y++){ int location = x + y *width; } }
après tu dois vérifier si les coordonnées de ta mouse correspondent à la position de tes pixels, ça pourrait ressembler à quelque chose comme ça:
loadPixels(); m.loadPixels(); int locMouseX = int(mouseX); int locMouseY = int(mouseY) ; for(int x=0; x<width; x++) { for(int y=0; y<height; y++) { int location = x + y * w; if(locMouseX == x && locMouseY == y) { color c = color(int(random(255)), int(random(255)), int(random(255))); pixels[location]= c ; } } } updatePixels();
mais si je comprends bien, tu transformes au préalable tes pixels en rect en fonction du zoom que tu fais dans ton image ...?
Dernière modification par oyster_twiter (2011-01-23 19:18:35)
Hors ligne
Je sais pas si j'ai été suffisament clair donc je reviens sur ce post :
Les coordonnées de ta souris :
x = mouseX;
et
y = mouseX;
Les coordonnées de ton pixel :
x = indexDeTonpixel % width;
et
y = indexDeTonPixel / width;
par exemple :
après tu accèdes à ton pixel comme ça:
pixels[indexDeMonPixel] = color(255, 0, 0); // la je colorie le pixel en rouge
tu récupères ses coordonnées comme ci:
int pixelX = indexDeMonPixel % width; int pixelY = indexDeMonPixel / width;
puis tu peux vérifier si ta souris est au dessus de ton pixel (ce qui ne sera pas simple à vérifier vu la taille de ton pixel )
if(mouseX == pixelX && mouseY == pixelY) println("je suis dessus !");
surtout n'oublis pas d'updater les pixels, pour rafraichir l'image:
updatePixels();
voilà, j'espère avoir été plus clair :
+++
Dernière modification par oyster_twiter (2011-01-26 13:23:12)
Hors ligne
Pages: 1