salut tout le monde...j'ai un soucis mathématique et de listes dans processing;
j'ai une grille de 100 numéros genre :
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
...
je dois prendre dans cette grille un point de coordonnées par exemple 65. ce point est le centre d'un carré de dimension 5x5. et il me faudrait les coordonnées de chacun des points de ce carré:
la liste ressemblerait à ça: { 43,44,45,46,47,53,54,55,56,57,63,64,65,66,67,73,74,75,76,77,83,84,85,86,87}
je suis déjà à la ramasse question calcul, mais aussi pour générer un array, sans devoir passer par la fonction add.list(value...).
peut être avec une boucle for ?
j'espère être clair dans ma demande ...? merci par avance.
Hors ligne
Bonsoir,
Voilà de quoi remuer tes méninges :
int[] tableau; int dimension; int centre; void setup() { dimension = 5; tableau = new int[dimension * dimension]; for (int i = 0 ; i < tableau.length; i++) { tableau[i] = 0; } centre = 65; noLoop(); } void draw() { int k = 0; int dizaine = (centre - 1) / 10; // Retranche 1 car le tableau commence par 1 .. 10 int unite = (centre - 1) % 10; int debutI = constrain(dizaine - dimension / 2, 0, 10); int finI = constrain(dizaine - dimension / 2 + dimension, 0, 10); int debutJ = constrain(unite - dimension / 2, 0, 10); int finJ = constrain(unite - dimension / 2 + dimension, 0, 10); for (int i = debutI; i < finI; i++ ) { for (int j = debutJ; j < finJ; j++) { tableau[k] = i * 10 + j + 1; // Ajoute 1 pour retrouver le format initial du tableau k++; } } println(tableau); }
Hors ligne
salut merci de ta réponse !!
c'est vraiment une logique à part, moi qui vient de pure data...y a des tutos , ou des incontournables en java qu'il faut absolument lire ?
sinon voici une autre solution:
int[] input = new int[100]; for(int i=0; i<input.length;i++){ input[i]=i+1; } int target = 65; int[] output = new int[25]; int counter=0; for(int i=-20;i<30;i+=10){ for(int j=-2;j<3;j++){ output[counter] = input[target-1+i+j]; counter++; } } String toPrint = ""; for( int i=0; i<output.length;i++){ toPrint += "" + output[i] + " "; } println( toPrint );
Hors ligne
Oui, ce bout de code fonctionne quand le centre n'est pas proche des bords. J'ai mis des conditions min et max (constrain) afin de rester dans les clous, mais sinon c'est la même logique.
Bon apprentissage.
Hors ligne
En tutos , tu as ça : http://processing.org/learning/
tu as aussi le manuel floss : http://fr.flossmanuals.net/processing/
Bonne lecture
Hors ligne
Pages: 1