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にデータファイルを読み込み,結果をプロットする際に使用することができます.

## 例

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

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()

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

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()

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

// 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()

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

// 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()

## 参照

- colorbar
- Sfgrayplot
- Sgrayplot