<?xml version="1.0" encoding="UTF-8"?>

<!--

 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab

 * Copyright (C) INRIA

 *


 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.

 *

 -->

<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="ja" xml:id="fec">

    <refnamediv>

        <refname>fec</refname>

        <refpurpose>三角メッシュ上に定義された関数の擬似カラープロット</refpurpose>

    </refnamediv>

    <refsynopsisdiv>

        <title>呼び出し手順</title>

        <synopsis>fec(x,y,triangles,func,&lt;opt_args&gt;)

            fec(x,y,triangles,func,[strf,leg,rect,nax,zminmax,colminmax,colout,mesh])

        </synopsis>

    </refsynopsisdiv>

    <refsection>

        <title>引数</title>

        <variablelist>

            <varlistentry>

                <term>x,y</term>

                <listitem>

                    <para>

                        大きさ <literal>n</literal>のベクトル,

                        <literal>(x(i),y(i))</literal> は

                        ノード  <literal>i</literal>の座標を定義します

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>func</term>

                <listitem>

                    <para>

                        大きさ <literal>n</literal>のベクトル : <literal>func(i)</literal>

                        は,擬似カラープロットを行う関数のノード <literal>i</literal>における値を定義します.

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>triangles</term>

                <listitem>

                    <para>

                        <literal>[Ntr,5]</literal> 行列.

                        <literal>triangles</literal>の各行は,メッシュの三角形

                        <literal>triangle(j) = [number,node1,node2,node3,flag]</literal>

                        を定義します.

                        <literal>node1,node2,node3</literal> は三角形を構成するノードの番号です.

                        number は三角形の番号で,flag は fec 関数では使用されない整数です.

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>&lt;opt_args&gt;</term>

                <listitem>

                    <para>

                        一連の命令 <literal>key1=value1, key2=value2</literal>,... を

                        表し, この命令には以下のどれかを指定できます:

                        strf, leg, rect, nax, zminmax, colminmax, colout, mesh

                        (最初の4つについては<link linkend="plot2d">plot2d</link>を参照).

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>strf,leg,rect,nax</term>

                <listitem>

                    <para>see plot2d</para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>zminmax</term>

                <listitem>

                    <para>要素 [zmin zmax]を有するベクトル (特にアニメーションの場合に有用)</para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>colminmax</term>

                <listitem>

                    <para>2つの正の整数 [colmin colmax]のベクトル</para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>colout</term>

                <listitem>

                    <para>要素数2の定数ベクトル [under_min_col upper_max_col]</para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>mesh</term>

                <listitem>

                    <para>論理値スカラー, デフォルト値e %f (メッシュも表示させたい場合には true にしてください)</para>

                </listitem>

            </varlistentry>

        </variablelist>

    </refsection>

    <refsection>

        <title>説明</title>

        <para>この関数は,線形三角有限要素解を描画する際や単に

            三角形分割により定義された関数を表示する際に有用です.

            ソフトウエア計算による色補間が行われるため,極めて高速という

            わけではありません.

        </para>

        <para>

            関数 <link linkend="colorbar">colorbar</link> は色スケールを

            参照するためにも使用できます(例の節を参照).

        </para>

        <para>

            引数<literal>zminmax</literal> は(カレントのカラーマップにおける)最初と

            最後の色に関連するzの値を指定します.

            カラーマップが nc 個の色を有し,

            <emphasis>dz = (zmax-zmin)/nc</emphasis>とすると,

            <emphasis>zmin + (i-1)dz &lt;= z &lt; zmin + i dz</emphasis>となる

            三角形分割された部分は色<emphasis>i</emphasis>で塗りつぶされます.

            デフォルトでは,<emphasis>zmin = min(func)</emphasis> および

            <emphasis>zmax = max(func)</emphasis>となります.

            時間で変化するう関数の値でアニメーションを行いたい場合,

            zmin および zmax グローバルな最小値および最大値もしくはそれに近い値

        </para>

        <para>

            引数 <literal>colout</literal> により2つの極値領域

            <emphasis>{func &lt; zmin}</emphasis> および <emphasis>{func &gt; zmax}</emphasis>

            の色をユーザが選択できるようになります.

            <literal>under_min_col</literal> および

            <literal>upper_max_col</literal> の色は(独立で)以下と同じにすることができます:

        </para>

        <variablelist>

            <varlistentry>

                <term>-1</term>

                <listitem>

                    <para>この場合,近いゾーンでは同じ色が使用されます

                        (注意: 対応する極値が交差する場合,判別できません),

                        これがデフォルトです.

                    </para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>0</term>

                <listitem>

                    <para>この場合,極値領域は塗られません.</para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>k</term>

                <listitem>

                    <para>(k はカレントのカラーマップへの有効なインデックス)

                        極値領域は色 kで塗られます.

                    </para>

                </listitem>

            </varlistentry>

        </variablelist>

        <para>

            完全なカラーマップを使用したくない場合,

            <emphasis>1 &lt;= colmin &lt; colmax &lt;= nc</emphasis>となるような

            <literal>colminmax</literal>引数を使用できます

            (nc はカレントのカラーマップの色の数).

            この場合,カラーマップの一部 [colmin,colmax]のみが使用されます.

            (デフォルトではカラーマップの全ての色が使用されます).

        </para>

        <para>

            以下のデモファイル<literal>demos/fec</literal>を参照ください:

        </para>

        <para>

            <literal>fec.ex1</literal> はメッシュおよびメッシュ上の関数

            に関する簡単なデモファイルで完全に Scilab 構文で構築されています.

        </para>

        <para>

            <literal>fec.ex2</literal> は,

            メッシュおよび関数値が外部のメッシュビルダ(amdba 型のメッシュ)

            および外部プログラムで計算される例です.

            ( ファイル <literal>macros.sci</literal>で提供される)一連のマクロを

            Scilabにデータファイルを読み込み,結果をプロットする際に使用することができます.

        </para>

    </refsection>

    <refsection>

        <title>例</title>

        <programlisting role="example"><![CDATA[

// 小規模な三角形分割を定義 (頂点:4, 三角形:2 )

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];  // 各頂点における関数の値

clf()

gcf().color_map = jet(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

  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 = jet(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[

// 小規模な三角形分割を定義  (頂点:4, 三角形:2 )

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];  // 各頂点におけるfuncの値

// この例は zminmax の効果を示し, 前の例のデータを使用します

// (前の例を事前に実行している必要があります)

clf()

gcf().color_map = jet(64);

colorbar(-0.5,0.5)  // カラーバーをマニュアルで設定する必要があることに注意 !

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 = jet(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[

// 小規模な三角形分割を定義  (頂点:4, 三角形:2 )

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];  // 各頂点におけるfuncの値

// この例は zminmax および colout の効果を示します.

// この例も最初の例のデータを使用します.

// (前の例を事前に実行している必要があります)

clf()

gcf().color_map = jet(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 : 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 : 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 : 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 : 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 = jet(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 : 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 : 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 : 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 : using zminmax and colout =[0 -1]")

            show_window()

        </scilab:image>

        <programlisting role="example"><![CDATA[

// 小規模な三角形分割を定義  (頂点:4, 三角形:2 )

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];  // 各頂点におけるfuncの値



// この例は colminmax の機能を示します:

// 2つのサブプロットに 2 つのカラーマップを使用します.

// この例も最初の例のデータを使用します.

clf()

gcf().color_map = [hot(64); jet(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 = [hot(64); jet(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>

    </refsection>

    <refsection role="see also">

        <title>参照</title>

        <simplelist type="inline">

            <member>

                <link linkend="colorbar">colorbar</link>

            </member>

            <member>

                <link linkend="Sfgrayplot">Sfgrayplot</link>

            </member>

            <member>

                <link linkend="Sgrayplot">Sgrayplot</link>

            </member>

        </simplelist>

    </refsection>

</refentry>

