Bonjour,
Je débute actuellement sur Processing (Je m'excuse d'avance des inexactitudes que je risque de faire). Malgré l'aide de plusieurs tuto, je n'arrive pas à finir un sketch (qui me parait pourtant simple...). Je me tourne alors vers vous.
J'ai un fichier texte regroupant à l'intérieur des valeurs sur 3 colonnes: la 1ère est le numéro de la colonne ; La 2ème colonnes des valeurs représente le x et la 3ème représentant le y.
Je souhaite, tout simplement, qu'à chaque valeur (x et y) faire apparaître une petite croix (ça parait simple pourtant, non ?) ; Et faire en sorte que ces points soient reliés, c'est à dire que le point 1 est relié avec le 2, qui est relié avec le 3 (donc le 2 est relié avec le point 1 et 3), etc...
Actuellement, je n'ai qu'un point (au lieu d'une croix), je ne sais pas comment procéder.
Pareil pour les traits je n'arrive pas à "dire" x et y de la ligne actuelle (pour le 1er point) et x et y de la ligne suivante (du fichier texte).
String[] lines; int index = 0; void setup() { size(480, 360); background(255); stroke(0); frameRate(300); lines = loadStrings("fichier.txt"); } void draw() { if (index < lines.length) { String[] pieces = split(lines[index], '\t'); //println(lines[index]); int t = int(pieces[1]); float x = int(pieces[2]); float y = int(pieces[3]); point(x, y); println (t + "\t" + x + "\t" + y); index = index + 1; }
Merci d'avance, en espérant avoir étais clair.
Dernière modification par Gaki (2013-03-28 13:47:39)
Hors ligne
tu peux nous mettre un extrait du fichier texte pour voir comment sont formatées les valeurs ?
Hors ligne
Bonjour,
Attention les tableaux commencent à l'indice 0 donc :
String[] lines; int index = 0; void setup() { size(480, 360); background(255); stroke(0); frameRate(300); lines = loadStrings("fichier.txt"); } void draw() { if (index < lines.length) { String[] pieces = split(lines[index], '\t'); //println(lines[index]); int t = int(pieces[0]); float x = int(pieces[1]); float y = int(pieces[2]); ellipse(x, y, 10, 10); println (t + "\t" + x + "\t" + y); index = index + 1; } }
Remarque, dans le forum utilise les balises code pour insérer du code.
J'ai mis en pièce jointe le fichier texte utilisé. J'ai séparé les colonnes par des tabulations.
Il faut mettre le fichier dans le répertoire du sketch Processing.
Dernière modification par Mushussu (2013-03-28 13:23:06)
Hors ligne
Je me suis mal exprimé.
J'ai bien la forme voulu mais au lieu d'avoir des croix, j'ai actuellement que des points (non relié).
Voici le un bout du fichier texte
0 152.75 95 0 1 149.25 95.8711 0 2 144.531 97.2422 0 3 138.062 99.707 0 4 130.449 104.543 0 5 121.973 110.559 0 6 113.145 117.336 0
Désolé pour la balise.
Hors ligne
Ah !
En fait il faut te faire une fonction qui te dessineras une croix avec x et y en centre et deux ligne qui se croisent.
Pour relier les points, l'idéal est de faire un tableau de points que tu rempliras avec les valeurs du fichier lu.
Ensuite tu parcourras le tableau et tu relieras le point courant avec le point suivant.
String[] lines; int index = 0; PVector[] points; void setup() { size(480, 360); background(255); stroke(0); frameRate(300); lines = loadStrings("fichier.txt"); println("lignes : " + lines.length); points = new PVector[lines.length]; noLoop(); } void draw() { for (int index = 0; index < lines.length; index++) { String[] pieces = split(lines[index], '\t'); //println(lines[index]); int t = int(pieces[0]); int x = int(pieces[1]); int y = int(pieces[2]); points[index] = new PVector(x, y); croix(points[index]); println (t + "\t" + x + "\t" + y); } for (int i = 0; i < points.length - 1; i++) { line(points[i].x, points[i].y, points[i + 1].x, points[i + 1].y); } } void croix(PVector centre) { line(centre.x - 10, centre.y - 10, centre.x + 10, centre.y + 10); line(centre.x + 10, centre.y - 10, centre.x - 10, centre.y + 10); }
Attention à la dernière ligne du fichier, il ne faut pas qu'elle soit vide.
Hors ligne
Merci beaucoup Mushussu pour cette 1ère partie.
Je m'excuse pour mon ignorance mais quand tu dis qu'il ne faut pas que la dernière ligne soit vide, peux-tu m'éclairer sur ce qu'il faudrait mettre ?
Je pense avoir, plus ou moins, saisi le reste.
Merci.
Hors ligne
Je disais, qu'il fallait qu'elle ne soit pas vide, mais c'était une erreur de ma part. Ne tiens pas compte de ma dernière remarque.
Je suis désolé si cela t'a plongé dans des abîmes de perplexité.
Hors ligne