Besoin d'aide pour un programme en java school

Fermé
Roxanesei Messages postés 2 Date d'inscription samedi 14 décembre 2013 Statut Membre Dernière intervention 15 décembre 2013 - Modifié par Roxanesei le 14/12/2013 à 20:43
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 16 déc. 2013 à 18:36
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
15 déc. 2013 à 09:33
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 samedi 14 décembre 2013 Statut Membre Dernière intervention 15 décembre 2013
15 déc. 2013 à 16:02
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
16 déc. 2013 à 18:36
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