Bonjour cgiles,
tout d'abord, merci pour ton aide!
Je suis en train de m'amuser (d'essayer en tout cas) avec loadPixels, mais un gros mystère plane.
Voici d'abord mon code
et mon image
pourquoi le println(monImage1.pixels[round(dest.x+dest.y*width)]); me donne parfois -1 et parfois -16777216, alors que ça devrait tout le temps être -1?
Est-ce que je calcule mal la position dans le tableau pixels?
Hors ligne
pardon mauvaise image, car entre temps j'ai essayé avec un jpg pour voir, mais ça ne change rien…
Hors ligne
pour avoir des valeurs plus logique dans ton println , il faut ajouter un hex() pour convertri en hexadecimal, chaque paire de valeurs corresponds a R V B A en hexadecimal
println(hex(monImage1.pixels[round(dest.x+dest.y*width)]));
Par contre je comprend pas pourquoi il voit un point rouge sans alpha régulièrement...
Hors ligne
et je m'aperçois même (en augmentant les valeurs de ajoutX et ajoutY) qu'il ne voit pas le noir…
Hors ligne
J'ai fini par comprendre pour le rouge!
En fait il ne voit pas du rouge sans alpha, c'est que l'alpha est placé en premier.
Donc il voit bien du blanc à FF d'alpha
http://processing.org/reference/hex_.html
Ce que je ne comprends toujours pas en revanche, c'est pourquoi il ne voit pas que du blanc quand il est au dessus du blanc… Je ne vois qu'un problème de calcul de la position du pixel dans le tableau pixels, je vais chercher de ce côté.
Hors ligne
C'est à n'y rien comprendre…
Si je teste avec la souris,
println(hex(monImage1.pixels[mouseX+mouseY*width], 6));
ça fonctionne…
argh…
Hors ligne
Bon, j'ai trouvé la solution, mais pas la raison.
Si j'applique le round() à l'initialisation des 2 variables ajoutX et ajoutY
void calculDest() { float ajoutX = round(random(-100, 100)); float ajoutY = round(random(-100, 100));
ça fonctionne.
Encore merci cgiles pour ton aide!
Hors ligne