Par Damien MUTI
Dans le programme suivant, nous allons montrer comment extraire des données d'un fichier .txt ou .cvs pour les utiliser dans un sketch.
Considérons un certain nombre de points M(x,y,z) dans l'espace modélisés par le type PVector sous Processing.
Plutôt que de définir tous ces points dans le corps du programme, il est plus élégant de placer les coordonnées de chaque points dans un fichier nommé points.txt ou points.cvs, puis de lire récursivement les coordonnées de chaque points à l'aide de méthodes bien choisies:
(voir les références de Processing)
sous un tableur (Excel ou libreOffice) :
1) Entrer les valeur des coordonnées en 3 colonnes (pour x, y et z):
2) Enregistrer le fichier en “.csv”. On donne par exemple le nom “points.csv” au fichier précédant. On obtient le fichier suivant:
-700;200;2800; -600;200;2800; -500;200;2800; -400;200;2800; -300;200;2800; -200;200;2800; -600;0;2800; -500;0;2800; -400;0;2800; -300;0;2800; -200;0;2800; -100;0;2800;
3) Enregistrer le fichier points.csv dans le dossier “Data” de votre sketch Processing.
Dans l'IDE de Processing taper le programme suivant:
String[] contenu_file; // tableau contanent les différentes ligne du fichier à lire PVector[] hotPoints; // tableau de PVector contenant les coordonnées des points en 3D nommés "hotPoints" void setup() { // lecture de toutes les lignes du fichier et enregistrement des ces lignes dans le tableau "contenu_file" contenu_file = loadStrings("Vecteurs_Hot_Points.csv"); // création du tableu de PVector de la même taille que le tableau "contenu_file" contenant les données à traiter hotPoints = new PVector[contenu_file.length]; // pour tous les éléments du tableau, faire... for (int i=0;i<contenu_file.length;i++){ // séparer toutres les données contennues dans une ligne. Le séparateur est ici le point virgule. String[] pieces = split(contenu_file[i], ";"); // remplir le tableau "hotPoint" avec un nouveau PVector dont les coordonnées sont contenus dans le tableau "pieces" hotPoints[i] = new PVector(float(pieces[0]), float(pieces[1]), float(pieces[2]) ); println(hotPoints[i]); } } void draw() { }
ATTENTION: Lorsque vous enregistrez le fichier .cvs, il convient de bien vérifier la nature du séparateur. Ici, le séparateur dans le fichier “Vecteurs_Hot_Points.csv” est un point virgule. Par conséquent le séparateur “;” doit être passé en deuxième paramètre de la méthode “split()”.
Vous n'avez plus qu'à utiliser le tableau de PVector “hotPoints” dans la boucle draw() comme bon vous semble !!