# contour

3次元曲面に等高線を描画

## 呼び出し手順

    contour(x,y,z,nz,[theta,alpha,leg,flag,ebox,zlev])
                contour(x,y,z,nz,<opt_args>)

## 引数

x,y

  大きさ n1 および n2の実数行ベクトル.

z

  大きさ (n1,n2)の実数行列, 関数の値または 曲面 `z=f(x,y)`を定義するScilab関数.

nz

  等高線の値または等高線の数.

  -

    `nz`が整数の場合, その値は等高線の数 を指定し,以下のように zmin から zmaxまで等間隔に設定されます:

        z= zmin + (1:nz)*(zmax-zmin)/(nz+1)

    `zmin` および `zmax` の等高線は描画されません (一般にこれらは複数の点となってしまいます)が, 以下のように追加できることに注意してください.

        [im,jm] = find(z == zmin);     // または zmax
        plot2d(x(im)',y(jm)',-9,"000")

  -

    `nz` がベクトルの場合, `nz(i)` は i番目の等高線の値を指定します. `zmin` および `zmax` の 等高線を表示するには,以下のように イプシロン許容誤差を追加するのが便利です: `nz=[zmin+%eps,..,zmax-%eps]`.

<opt_args>

  一連の命令 `key1=value1, key2=value2`, ... ただし, key は `theta`,`alpha`,`leg`, `flag`, `ebox`,`zlev` (以下参照). この場合, 順番には特別な意味はありません.

theta, alpha

  実数値で,観測点の球座標(単位:度).

leg

  各軸の表題を定義する文字列, フィールドセパレータは @, 例: "X@Y@Z".

flag

  実数ベクトルで, その要素は `flag=[mode,type,box]`.

  mode

    文字列で,モードを定義.

    mode=0:

      等高線は(x,y,z)で定義された曲面に描画されます.

    mode=1:

      等高線は3次元プロットおよび equation z=zlevで定義された平面に 描画されます.

    mode=2:

      等高線は2次元プロットに描画されます.

  type

    整数 (スケーリング).

    type=0

      プロットはカレント (前の `param3d`, `plot3d`, `contour`または `plot3d1`のコールにより設定された) の3次元スケーリングを用いて行われます.

    type=1

      アスペクト比の最大値に基づき3次元ボックスが 自動的にスケールが調整されます.オプション引数`ebox` により境界が指定されます.

    type=2

      アスペクト比の最大値に基づき3次元ボックスが 自動的にスケールが調整されます. 境界は指定したデータに基づき計算されます.

    type=3

      `type=1`に似ており, オプションの`ebox`で指定された ボックス付きの3次元の等しい軸となります.

    type=4

      `type=2`に似ており, データに基づく 3次元の等しい軸となります.

    type=5

      `type=1`に似ており, オプションの`ebox`で指定された ボックス付きの3次元の拡大された等しい軸となります.

    type=6

      `type=2`に似ており, データに基づく 3次元の拡大された等しい軸となります.

  box

    整数 (プロット周囲のフレーム).

    box=0

      プロットの周囲には何も描画されません.

    box=1

      未実装 (box=0と同じ).

    box=2

      曲面の後ろの軸のみが描画されます.

    box=3

      曲面を囲うボックスが描画され, 表題が追加されます.

    box=4

      曲面を囲うボックスが描画され, 表題と軸が追加されます.

ebox

  `flag`の`type`が1の時に 使用されます. ベクトル`[xmin,xmax,ymin,ymax,zmin,zmax]` としてプロットの境界を指定します.

zlev

  実数.

## 説明

`contour` は,曲面 z=f(x,y) の等高線を描画します. 等高線は, 3次元曲面上に描画されます.(`zlev`を除く) オプションの引数は関数`plot3d`と同じです. これらのオプションの意味は同じです. これらのオプションは3次元プロット上への等高線の描画を制御します. `flag(1)=mode`のみが特別な意味を有します.

mode=0

  等高線は (x,y,z) で定義された曲面上に描画されます.

mode=1

  3次元プロット上および 式 z=zlevで定義されたプロット上にに等高線が描画されます.

mode=2

  2次元プロット上に等高線が描画されます.

等高線上に印字される浮動小数点数のフォーマットを `xset("fpf",string)`により変更することができます. ただし, `string` にはC言語の構文で (例えば `string="%.3f"`)でフォーマットを指定します. デフォルトのフォーマットに戻すには `string=""`と してください. 出力を抑制するには,`string=" "`を使用してください.

通常, 2次元プロット上に等高線を描画するために`contour2d` を使用します.

コマンド `contour()` を入力することでデモを参照できます.

## 例

contour();

## 例

    t=linspace(-%pi,%pi,30);
    function z=my_surface(x,y),z=x*sin(x)^2*cos(y),endfunction

    contour(t,t,my_surface,10)
    // 等高線の出力形式を変更します
    xset("fpf","%.1f")
    clf()
    contour(t,t,my_surface,10)
    // 3D
    clf()
    z=feval(t,t,my_surface);
    plot3d(t,t,z);contour(t,t,z+0.2*abs(z),20,flag=[0 2 4]);

## 参照

- contour2d
- plot3d