Nous ne décrirons pas les multiples possibilités du logiciel du domaine public, gnuplot , mais seulement celles qu consistent à afficher les ordres de tracé contenu dans un fichier.
Par exemple, si le fichier 'ex.gnu' contient
0.0 0.0 0.0 0.1 0.1 0.05 0.1 0.05 0.0 0.0
alors les commandes
gnuplot plot [-0.2,0,0.2][-0.2,0.2] "ex.gnu" w l quit
auront pour effet de tracer à l'écran, dans une fenêtre graphique, un triangle rectangle de base 0.1 et de hauteur 0.05. Le tracé se fait en commencant par le polygone ouvert des 3 premier point puis en trcant le dernier segment dont les extrémitées sont les 2 dernieres lignes. Autrement dit une ligne blanche provoque un "moveto" au point de la suivante alors que sinon c'est un "lineto" sur la suivante qui est effectué. La fenêtre permet de tracer tout objet s'inscrivant dans un carré [-0.2,0.2]x[-0.2,0.2]; en changeant ces dimensions on peut faire des "zoom".
Visiblement les fichiers de triangulation et les fichiers gnuplot sont différents. Sachant que gnuplot affiche tout couple de 2 lignes (séparées par une ligne vide) contenant les coordonnées de 2 points comme un segment de droite, la génération d'un fichier gnuplot pour tracer une triangulation à partir d'un fichier freefem est aisée:
void Triangulation::gnu(const char* filename) const { ofstream f(filename); for(int i=0; i<nt; i++) { f << v[t[i].v[0]].x << "\t" << v[t[i].v[0]].y << endl << v[t[i].v[1]].x << "\t" << v[t[i].v[1]].y << endl << v[t[i].v[2]].x << "\t" << v[t[i].v[2]].y << endl << v[t[i].v[0]].x << "\t" << v[t[i].v[0]].y << endl <<endl; } }
Une fonction est du type "const" (mis en fin de declaration) lorsqu'elle n'affecte pas les champs de la classe.
Naturellement on devra rajouter la déclaration de la fonction "gnu" dans la classe Triangulation.
La fonction main pour cette tache est donc
void main() { Triangulation g("micro.msh"); g.gnu("micro.gnu"); }
Il existe un autre logiciel du domaine public plus élaboré que gnuplot: plotmtv.
Se faire un utilitaire qui lit un fichier triangulation et un fichier de fonction au format freefem et genère un fichier de visualisation de la fonction au format gnuplot .