# fec

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

## 呼び出し手順

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

## 引数

x,y

  大きさ `n`のベクトル, `(x(i),y(i))` は ノード `i`の座標を定義します

func

  大きさ `n`のベクトル : `func(i)` は,擬似カラープロットを行う関数のノード `i`における値を定義します.

triangles

  `[Ntr,5]` 行列. `triangles`の各行は,メッシュの三角形 `triangle(j) = [number,node1,node2,node3,flag]` を定義します. `node1,node2,node3` は三角形を構成するノードの番号です. number は三角形の番号で,flag は fec 関数では使用されない整数です.

<opt_args>

  一連の命令 `key1=value1, key2=value2`,... を 表し, この命令には以下のどれかを指定できます: strf, leg, rect, nax, zminmax, colminmax, colout, mesh (最初の4つについてはplot2dを参照).

strf,leg,rect,nax

  see plot2d

zminmax

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

colminmax

  2つの正の整数 [colmin colmax]のベクトル

colout

  要素数2の定数ベクトル [under_min_col upper_max_col]

mesh

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

## 説明

この関数は,線形三角有限要素解を描画する際や単に 三角形分割により定義された関数を表示する際に有用です. ソフトウエア計算による色補間が行われるため,極めて高速という わけではありません.

関数 colorbar は色スケールを 参照するためにも使用できます(例の節を参照).

引数`zminmax` は(カレントのカラーマップにおける)最初と 最後の色に関連するzの値を指定します. カラーマップが nc 個の色を有し, dz = (zmax-zmin)/ncとすると, zmin + (i-1)dz <= z < zmin + i dzとなる 三角形分割された部分は色iで塗りつぶされます. デフォルトでは,zmin = min(func) および zmax = max(func)となります. 時間で変化するう関数の値でアニメーションを行いたい場合, zmin および zmax グローバルな最小値および最大値もしくはそれに近い値

引数 `colout` により2つの極値領域 {func < zmin} および {func > zmax} の色をユーザが選択できるようになります. `under_min_col` および `upper_max_col` の色は(独立で)以下と同じにすることができます:

-1

  この場合,近いゾーンでは同じ色が使用されます (注意: 対応する極値が交差する場合,判別できません), これがデフォルトです.

0

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

k

  (k はカレントのカラーマップへの有効なインデックス) 極値領域は色 kで塗られます.

完全なカラーマップを使用したくない場合, 1 <= colmin < colmax <= ncとなるような `colminmax`引数を使用できます (nc はカレントのカラーマップの色の数). この場合,カラーマップの一部 [colmin,colmax]のみが使用されます. (デフォルトではカラーマップの全ての色が使用されます).

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

`fec.ex1` はメッシュおよびメッシュ上の関数 に関する簡単なデモファイルで完全に Scilab 構文で構築されています.

`fec.ex2` は, メッシュおよび関数値が外部のメッシュビルダ(amdba 型のメッシュ) および外部プログラムで計算される例です. ( ファイル `macros.sci`で提供される)一連のマクロを Scilabにデータファイルを読み込み,結果をプロットする際に使用することができます.

## 例

fec();

## 例

    // 小規模な三角形分割を定義 (頂点: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()
    xset("colormap",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
      xtitle("fec example (without the mesh)")
    show_window()

    // 小規模な三角形分割を定義  (頂点: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()
    xset("colormap",jetcolormap(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()

    // 小規模な三角形分割を定義  (頂点: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()
    xset("colormap",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()

    // 小規模な三角形分割を定義  (頂点: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()
    xset("colormap",[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()

## 参照

- colorbar
- Sfgrayplot
- Sgrayplot