No describiremos la multiples posibilidades de este programa de dominio publico, gnuplot , solamente aquellas que permiten trazar lineas almacenadas en un archivo.
Por ejemplo, si el archivo 'ex.gnu' contiene
0.0 0.0 0.0 0.1 0.1 0.05 0.1 0.05 0.0 0.0entonces los comandos
gnuplot plot [-0.2:0.2][-0.2:0.2] "ex.gnu" w l quittendran el efecto de trazar en la pantalla un triángulo de base y altura 0.1. El trazado se hace comenzando por el poligono abierto definido por los 3 primeros puntos, luego se traza el último segmento donde las extrémidades son las 2 últimas lineas. Es decir, una linea en blanco es equivalente a un "moveto" al punto de la siguiente linea, mientras que en los otros casos se trata de un "lineto". La ventana permite trazar todo objeto que se inscriva en el cuadrado [-0.2,0.2]x[-0.2,0.2]. Cambiando estas dimensiones se pueden hacer "zoom".
Visiblemente los archivos de triangulacion y los archivoss \htmladdnormallink{gnuplot}{} son diferentes. Sabiendo que gnuplot grafica todo par de dos lineas (separadas por una en blanco) que contengan las coordenadas de 2 puntos como un segmento de recta, la generación de un archivo gnuplot para trazar una triangulacion a partir de un archivo freefem es fácil:
void Triangulacion::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;
}
}
Naturalmente se debera agragar la declaración de la función "gnu" en la classe Triangulacion.
La función main para esta tarea es
void main()
{
Triangulacion g("micro.msh");
g.gnu("micro.gnu");
}
Hacer un utilitario que lea un archivo triangulacion y un archivo de función en el formato freefem y genere un archivo de visualisation de la función en el formato gnuplot .