<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="fec">
    <refnamediv>
        <refname>fec</refname>
        <refpurpose>dessin en pseudo-couleurs d'une surface
            définie sur un maillage constitué de polygones convexes
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Séquence d'appel</title>
        <synopsis>fec(x,y,triangles,func,[strf,leg,rect,nax,zminmax,colminmax])</synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Paramètres</title>
        <variablelist>
            <varlistentry>
                <term>x,y</term>
                <listitem>
                    <para>
                        deux vecteurs de taille <literal>n</literal>,
                        <literal>(x(i),y(i))</literal> donne les coordonnées du sommet
                        <literal>i</literal>
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>func</term>
                <listitem>
                    <para>
                        un vecteur de taille <literal>n</literal> : <literal>func(i)</literal>
                        donne la valeur de la fonction à  représenter
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>triangles</term>
                <listitem>
                    <para>
                        une matrice <literal>[Ntr, N+2]</literal>. Chaque ligne de
                        <varname>triangles</varname> représente un polygone du maillage
                        <literal>triangles(j) = [number,node1,node2,node3, ..., nodeN, flag]</literal>.
                        <literal>node1,node2,node3, ..., nodeN</literal> sont les numéros des sommets qui
                        constituent le polygone j. number est le numéro du polygone et flag
                        est un entier qui n'est pas utilisé par fec.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>strf,leg,rect,nax</term>
                <listitem>
                    <para>voir plot2d</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>zminmax</term>
                <listitem>
                    <para>
                        parfait pour faire des animations avec fec. <varname>zminmax</varname> est un
                        vecteur de taille 2 [zmin zmax] qui donne les z associés à  la
                        première et la dernière couleur (de la table des couleurs courante).
                        Plus exactement si la table des couleurs a nc couleurs et si on note
                        <emphasis>dz = (zmax-zmin)/nc</emphasis>, alors la partie du maillage où <emphasis>zmin +
                            (i-1)dz &lt;= z &lt; zmin + i dz
                        </emphasis>
                        est remplie avec la couleur <emphasis>i</emphasis>). Par
                        défaut <emphasis>zmin = min(func)</emphasis> et <emphasis>zmax = max(func)</emphasis>. Si vous voulez faire
                        une animation avec des valeurs de func changeant en fonction du
                        temps, prenez zmin et zmax égaux au minimum et maximum globaux.
                        ATTENTION : pour les valeurs de func plus grandes que zmax la
                        dernière couleur est utilisée, et pour les valeurs plus petites que
                        zmin la première couleur est utilisée (on ne voit donc pas que les
                        niveaux de zminmax sont franchis).
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>colminmax</term>
                <listitem>
                    <para>un vecteur de 2 entiers positifs colminmax=[colmin colmax]
                        avec 1 &lt;= colmin &lt; colmax &lt;= nc (où nc est la taille de la
                        table des couleurs). Permet de définir un sous-ensemble de la table
                        des couleurs à  utiliser, ici cmap(colmin:colmax). Par défaut toute
                        la table des couleurs est utilisée.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>colout</term>
                <listitem>
                    <para>un vecteur de 2 entiers [under_min_col upper_max_col]</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>mesh</term>
                <listitem>
                    <para>un booléen, valeur par défaut %f (doit être %t pour afficher le maillage)</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Description</title>
        <para>Cette fonction est utile pour afficher les solutions des équations obtenues par la méthode des éléments finis, ou
            simplement pour afficher une fonction basée sur un maillage constitué de polygones.
        </para>
        <para>
            Pour des raisons historiques, le troisième argument d'entrée est nommé <varname>triangles</varname>, mais <function>fec</function> accepte tous les types de polygones convexes.
        </para>
        <para>Voir les fonctions de démonstration dans le répertoire
            <literal>demos/fec</literal>.
        </para>
        <para>
            <literal>fec.ex1</literal> est une simple démo dans laquelle le maillage et
            la fonction sont construits en langage Scilab.
        </para>
        <para>
            <literal>fec.ex2</literal> est un exemple où le maillage est construit avec
            un mailleur externe (type amdba). Un ensemble de macros
            (<literal>macros.sci</literal>) peut être utilisé pour lire les fichiers de
            données correspondants.
        </para>
    </refsection>
    <refsection>
        <title>Exemples</title>
        <programlisting role="example"><![CDATA[
// define a mini triangulation (4 vertices, 2 triangles)
x = [0 1 0 -1];
y = [0 0 1  1];
T = [1 1 2 3 1;
     2 3 4 1 1];
z = [0 1 0 -1];  // values of the func at each vertices
clf()
gcf().color_map = jetcolormap(64);
subplot(1,2,1)
  colorbar(-1,1)
  fec(x,y,T,z,strf="040",mesh=%t)
  xtitle("fec example (with the mesh)")
subplot(1,2,2)
  colorbar(-1,1)
  fec(x,y,T,z,strf="040")  // rmq: mesh=%f by default
  xtitle("fec example (without the mesh)")
show_window()
 ]]></programlisting>
        <scilab:image>
            x = [0 1 0 -1];
            y = [0 0 1  1];
            T = [1 1 2 3 1;
            2 3 4 1 1];
            z = [0 1 0 -1];  // values of the func at each vertices
            clf()
            gcf().color_map = jetcolormap(64);
            subplot(1,2,1)
            colorbar(-1,1)
            fec(x,y,T,z,strf="040",mesh=%t)
            xtitle("fec example (with the mesh)")
            subplot(1,2,2)
            colorbar(-1,1)
            fec(x,y,T,z,strf="040")  // rmq: mesh=%f by default
            xtitle("fec example (without the mesh)")
            show_window()
        </scilab:image>
        <programlisting role="example"><![CDATA[
// define a mini triangulation (4 vertices, 2 triangles)
x = [0 1 0 -1];
y = [0 0 1  1];
T = [1 1 2 3 1;
     2 3 4 1 1];
z = [0 1 0 -1];  // values of the func at each vertices
// this example shows the effect of zminmax and uses the
// previous example data (you have to execute the it before)
clf()
gcf().color_map = jetcolormap(64);
colorbar(-0.5,0.5)  // be careful colorbar must be set by hands !
fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], mesh=%t)
xtitle("fec example : using zminmax argument")
show_window()
 ]]></programlisting>
        <scilab:image>
            x = [0 1 0 -1];
            y = [0 0 1  1];
            T = [1 1 2 3 1;
            2 3 4 1 1];
            z = [0 1 0 -1];  // values of the func at each vertices
            // this example shows the effect of zminmax and uses the
            // previous example data (you have to execute the it before)
            clf()
            gcf().color_map = jetcolormap(64);
            colorbar(-0.5,0.5)  // be careful colorbar must be set by hands !
            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], mesh=%t)
            xtitle("fec example : using zminmax argument")
            show_window()
        </scilab:image>
        <programlisting role="example"><![CDATA[
// define a mini triangulation (4 vertices, 2 triangles)
x = [0 1 0 -1];
y = [0 0 1  1];
T = [1 1 2 3 1;
     2 3 4 1 1];
z = [0 1 0 -1];  // values of the func at each vertices
// this example shows the effect of zminmax and colout. It uses
// also the data of the first example (you have to execute the it before)
clf()
gcf().color_map = jetcolormap(64);
subplot(2,2,1)
  colorbar(-0.5,0.5)
  fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 0], mesh=%t)
  xtitle("fec example : using zminmax and colout =[0 0]")
subplot(2,2,2)
  colorbar(-0.5,0.5)
  fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[32 32], mesh=%t)
  xtitle("fec example : using zminmax and colout =[32 32]")
subplot(2,2,3)
  colorbar(-0.5,0.5)
  fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[-1 0], mesh=%t)
  xtitle("fec example : using zminmax and colout =[-1 0]")
subplot(2,2,4)
  colorbar(-0.5,0.5)
  fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 -1], mesh=%t)
  xtitle("fec example : using zminmax and colout =[0 -1]")
show_window()
 ]]></programlisting>
        <scilab:image>
            // define a mini triangulation (4 vertices, 2 triangles)
            x = [0 1 0 -1];
            y = [0 0 1  1];
            T = [1 1 2 3 1;
            2 3 4 1 1];
            z = [0 1 0 -1];  // values of the func at each vertices
            // this example shows the effect of zminmax and colout. It uses
            // also the data of the first example (you have to execute the it before)
            clf()
            gcf().color_map = jetcolormap(64);
            subplot(2,2,1)
            colorbar(-0.5,0.5)
            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 0], mesh=%t)
            xtitle("fec example : using zminmax and colout =[0 0]")
            subplot(2,2,2)
            colorbar(-0.5,0.5)
            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[32 32], mesh=%t)
            xtitle("fec example : using zminmax and colout =[32 32]")
            subplot(2,2,3)
            colorbar(-0.5,0.5)
            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[-1 0], mesh=%t)
            xtitle("fec example : using zminmax and colout =[-1 0]")
            subplot(2,2,4)
            colorbar(-0.5,0.5)
            fec(x,y,T,z,strf="040", zminmax=[-0.5 0.5], colout=[0 -1], mesh=%t)
            xtitle("fec example : using zminmax and colout =[0 -1]")
            show_window()
        </scilab:image>
        <programlisting role="example"><![CDATA[
// define a mini triangulation (4 vertices, 2 triangles)
x = [0 1 0 -1];
y = [0 0 1  1];
T = [1 1 2 3 1;
     2 3 4 1 1];
z = [0 1 0 -1];  // values of the func at each vertices

// this example shows a feature from colminmax:
// playing with 2 colormaps for 2 subplots. It
// uses also the data of the first example.
clf()
gcf().color_map = [hotcolormap(64); jetcolormap(64)];
subplot(1,2,1)
  colorbar(-1,1,[1 64])
  fec(x,y,T,z,strf="040", colminmax=[1 64], mesh=%t)
  xtitle("fec using the hot colormap")
subplot(1,2,2)
  colorbar(-1,1,[65 128])
  fec(x,y,T,z,strf="040", colminmax=[65 128], mesh=%t)
  xtitle("fec using the jet colormap")
show_window()
 ]]></programlisting>
        <scilab:image>
            // define a mini triangulation (4 vertices, 2 triangles)
            x = [0 1 0 -1];
            y = [0 0 1  1];
            T = [1 1 2 3 1;
            2 3 4 1 1];
            z = [0 1 0 -1];  // values of the func at each vertices

            // this example shows a feature from colminmax:
            // playing with 2 colormaps for 2 subplots. It
            // uses also the data of the first example.
            clf()
            gcf().color_map = [hotcolormap(64); jetcolormap(64)];
            subplot(1,2,1)
            colorbar(-1,1,[1 64])
            fec(x,y,T,z,strf="040", colminmax=[1 64], mesh=%t)
            xtitle("fec using the hot colormap")
            subplot(1,2,2)
            colorbar(-1,1,[65 128])
            fec(x,y,T,z,strf="040", colminmax=[65 128], mesh=%t)
            xtitle("fec using the jet colormap")
            show_window()
        </scilab:image>
        <programlisting role="example"><![CDATA[
// define a mapping with one quadrangle (4 vertices, 1 quadrangle)
x = [1 2 2 1];
y = [1 1 2 2];
T = [1 1 2 3 4 0];
z = [-1; -1; 1; 1];  // values of the func at each vertices

clf()
f = gcf();
f.color_map = jetcolormap(12);
colorbar(-1,1);
fec(x,y,T,z,mesh=%t)
xtitle("fec using the hot colormap, composed by one quadrangle")
 ]]></programlisting>
        <scilab:image>
            // define a mapping with one quadrangle (4 vertices, 1 quadrangle)
            x = [1 2 2 1];
            y = [1 1 2 2];
            T = [1 1 2 3 4 0];
            z = [-1 -1 1 1];  // values of the func at each vertices

            clf()
            f = gcf();
            f.color_map = jetcolormap(12);
            colorbar(-1,1);
            fec(x,y,T,z,mesh=%t)
            xtitle("fec using the hot colormap, composed by one quadrangle")
        </scilab:image>
    </refsection>
    <refsection role="see also">
        <title>Voir aussi</title>
        <simplelist type="inline">
            <member>
                <link linkend="Sfgrayplot">Sfgrayplot</link>
            </member>
            <member>
                <link linkend="Sgrayplot">Sgrayplot</link>
            </member>
        </simplelist>
    </refsection>
    <refsection>
        <title>History</title>
        <revhistory>
            <revision>
                <revnumber>5.5.2</revnumber>
                <revremark>
                    <para>
                        Le maillage peut désormais être consitué de polygones convexes.
                    </para>
                </revremark>
            </revision>
        </revhistory>
    </refsection>
</refentry>
