Besoin d'aide pour un programme en java school

Roxanesei Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis en Terminale S ayant pour spécialité ISN.

Avec ma coéquipière, on a besoin d'aide pour créer un programme :

"Inversion mouvante : une barre de 30 pixels de large se déplace sur l'image de gauche à droite provoquant son inversion localement."

L'image est de 500x500 pixels.

Notre programme :

void main() {
//Afficher l'image
String image = "CUsers/Melly/Pictures/Artwork_Les_Sims_3_A&C_13.jpg";
load(image);

//Effet barre de 30 pixels qui se déplace de gauche à droite donnant
//un effet négatif sur l'image :
for (int i = -250; i <=-220; i = i +1)
for (int j =-250; j <= 250; j = j +1) {
int pix = getPixel(i, j);
setPixel(i, j, 255 - pix);

}
}

Est-ce que vous pouvez nous aider svp ? :)
A voir également:

2 réponses

arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Bonjour,

En se référant à la charte, nous ne faisons pas les devoirs à la place des étudiants.

Néanmoins, en nous disant précisément où ça ne va pas, et ce que vous avez déjà fait, dans ce cas ce sera possible.
0
Roxanesei Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Nous bloquons dans notre programme parce que nous arrivons pas à faire bouger la barre de 30 pixels.

Nous savons que nous devons utiliser une boucle "for" pour que la largeur bouge et que la hauteur ne bouge pas.

Ensuite, nous avons essayé plusieurs fois mais la barre ne bouge pas ou elle bouge jusqu'au bout mais à la fin l'image est totalement en inversion.

Du coup on sait que lorsque la barre se déplace d'un pixel, il faut que l'ancien pixel "inversé" soit "re-inversé" pour qu'il redevienne normal.
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Quand je vois ça :

//Effet barre de 30 pixels qui se déplace de gauche à droite donnant
//un effet négatif sur l'image :
for (int i = -250; i <=-220; i = i +1)
for (int j =-250; j <= 250; j = j +1) {
int pix = getPixel(i, j);
setPixel(i, j, 255 - pix);

Je ne vois que la création d'une barre de 30*500 dont on inverse à priori les pixels. Mais effectivement aucun mouvement.

Du fait du premier for qui ne fait que créer petit à petit une barre de 30 pixels de large horizontal.

C'est déjà un bon début pour poursuivre. Si c'était moi je pense que je créerais la barre tant que celle-ci n'a pas une taille de 30. Ensuite lorsque la taille 30 est acquise, je ne refais pas tout le calcul des pixels, uniquement la mise à jour de la prochaine ligne de pixel X+1, et la mise à jour inverse de X-30 ou 31.

Par contre dans le setPixel,la formule d'inversion me paraît un peu douteuse, à moins que ce soit géré à postériori. Parce qu'en général le pixel possède un format RVB, à moins que cela soit simplifié pour cet exercice.

Mettons que ce soit le cas, 255 - 30, = 225, mais 225 -255 ne donnera pas 30.

Mais bon on a pas toutes les données non plus :-)
0