next up previous
Next: Visualización de una función Up: Sesión 2. Freefem y Previous: Lectura del archivo triangulación

Trazado con gnuplot

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.0
entonces los comandos

gnuplot 
plot [-0.2:0.2][-0.2:0.2] "ex.gnu" w l
quit
tendran 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;
    }   
}

REMARQUE 2  

Una función es del type ''const'' (ver el final de la declaración) cuando ella no afecta a los campos de la classe.

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");
}

REMARQUE 3  

Existe otro programa de dominio publico más elaborado que gnuplot: plotmtv.

EXERCICE 1  

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 .

EXERCICE 2  

1.
Hacer la triangulación con freefem de un cuadrado unitario con una perforación eliptica (la perforación se obtiene cambiando el sentido de recorrido de la frontera).
2.
Cambiar el sentodo de recorrido de l'ellipse, asignarle el indicador 0 y utilizarla para controlar el refinamiento de la mailla en esta región.
3.
Refinar la mailla del cuadrado en su base introduciendo una frontera interna de número 0 horizontal de longitud 1 y a una altura de 0.05. (Es necesario cortar los lados verticales en 2 para assurar la exactitud de la union de la frontera interne.)


next up previous
Next: Visualización de una función Up: Sesión 2. Freefem y Previous: Lectura del archivo triangulación
Jorge San Martin
1998-11-10