Bonjour !
Je débute en programmation, et code actuellement mon premier "vrai" programme pour mon projet d'ISN. Mais je rencontre plusieurs problèmes que je n'arrive pas à résoudre, malgré moult tentatives...
Je réalise un programme de décomposition d'image : à partir d'une image, le programme créé un carré, qui se divise en quatre autre carrés lorsque l'on passe la souris dessus, et ainsi de suite pour les autres carrés... précisant de plus en plus l'image de départ.
(Un exemple pour que ce soit plus clair, avec des cercles : http://www.koalastothemax.com/ )
Pour le moment, je m'occupe principalement de la partie du programme visant à diviser les carrés. Cependant, cela ne fonctionne pas vraiment très bien... voici le programme que j'ai réalisé (avec un maximum de commentaires pour que ce soit plus clair) :
Je pense notamment qu'il y a un problème avec la fonction centreCarre, qui appelle plusieurs fonctions à la suite, ce qui bloque peut-être le programme... ?
En fait, je me demande surtout si je suis bien parti : j'ai déjà tenté d'autres méthodes (notamment avec des boucles), et, à force de résoudre mes différents problèmes, j'en suis arrivé à ce programme à base de fonctions. Mais pour le coup, je ne vois plus comment progresser... dois-je à nouveau changer de méthode ?
Oh, et pendant que j'y suis, j'ai également deux autres questions d'ordre technique :
- Lorsque le programme se lance et que je passe ma souris sur les différents carrés, et que je la retire, le carré initialement divisé se redessine par dessus (je suppose). Comment faire pour qu'une fois un carré divisé, il ne réapparaisse plus ?
- En ce qui concerne la couleur, j'ai l'intention d'utiliser les coordonnées du centre des carrés pour récupérer la couleur du pixel correspondant sur l'image, et utiliser cette couleur pour remplir le carré concerné. J'ai fait des recherches, et j'ai trouvé le moyen de récupérer cette couleur via le type "color". Cependant, Processing ne reconnait pas "color" comme un type... j'ai beau regarder sur la documentation, je ne vois aucune action particulière à réaliser avant de l'utiliser... je ne comprend pas vraiment pourquoi. Doit-on faire une action précise avant d'utiliser ce type ?
Merci d'avoir pris le temps de me lire, et merci d'avance pour vos réponses !
Hors ligne
Pour l'histoire des couleurs, je vois en haut de ton programme
public class MyProcessingSketch extends PApplet {
tu développes sous eclipse ? si c'est le cas en réalité le type color n'est pas réellement un type de variable, en vrai c'est un tableau d'entiers, et u peux donc remplacer color par int.
Hors ligne
Bonsoir,
Pour ton carré, la couleur est la moyenne de la couleur de tous les pixels inclus dans ce carré. Il faut donc faire la moyenne pour les trois composantes couleurs rouge, vert, bleu.
Color est un type en Processing :
https://processing.org/reference/color_datatype.html
C'est codé sur un entier de 32 bits. (AARRVVBB) l'octet de poids fort code l'alpha (la transparence)le suivant le rouge le vert et le bleu. On peut y avoir accès avec les méthodes red(), green() et blue().
Pour la division, il faut avoir la liste des carrés avec leurs coordonnées, leur taille et leur couleur. L'utilisation de la programmation objet est souhaitable.
Il faut créer une classe qui a ces attributs et qui permet juste d'afficher le carré et qui peut vérifier si la souris est dessus.
Ensuite pour chaque mouvement de souris, il faut regarder si le pointeur est dans un carré, c'est-à-dire parcourir les carrés qui sont stockés dans une ArrayList.
Si c'est vrai il faut créer quatre carrés avec les valeurs moyennes des couleurs et retirer le carré qui vient d'être scindé.
Voilà ce que je ferais.
Bon courage.
Hors ligne
En effet, je ne développe pas sous Processing mais sous Docteur Java. Je comprend mieux du coup pour le type color.
Si j'ai bien compris concernant la division, il faut que je créé une classe de carrés qui donne les coordonnées, la taille et la couleur de chacun d'entre eux... puis que je fasse une liste comprenant tout les carrés créés ?
Tout cela me parait un peu compliqué pour le moment, je n'ai pas vraiment étudié cela jusqu'à présent, même si je vois de quoi il s'agit... Je vais sans doute devoir m'initier un peu plus aux classes et aux listes avant de pouvoir continuer.
En tout cas, merci beaucoup pour vos réponses !
Hors ligne
Pages: 1