# plot3d1

曲面の3次元白黒またはカラープロット

## 呼び出し手順

    plot3d1(x,y,z,[theta,alpha,leg,flag,ebox])
                plot3d1(xf,yf,zf,[theta,alpha,leg,flag,ebox])

                plot3d1(x,y,z,<opts_args>)
                plot3d1(xf,yf,zf,<opts_args>)

## パラメータ

x,y

  大きさ n1 および n2 の行ベクトル(x軸およびy軸座標 ). これらの座標は単調である必要があります.

z

  大きさ (n1,n2)の行列. `z(i,j)` は点(x(i),y(j))における 曲面の値です.

xf,yf,zf

  大きさ (nf,n)の行列. 曲面を描画する際に使用される小平面を定義します. `n`個の小平面があります. 各小平面 `i` は`nf`個の点を有するポリゴンで定義されます. i番目の小平面の点のx軸,y軸,z軸座標はそれぞれ`xf(:,i)`, `yf(:,i)` および `zf(:,i)`により指定されます.

<opt_args>

  一連の命令`key1=value1, key2=value2` ,...を表し, `key1`, `key2,...` は以下のどれかとすることができます: theta, alpha ,leg,flag,ebox (以下の定義を参照).

theta, alpha

  観測点の球座標を指定する実数値(単位:度).

leg

  各軸のラベルを定義する文字列. @ をフィールドセパレータとし, "X@Y@Z"のようになります.

flag

  大きさ3の実数ベクトル. `flag=[mode,type,box]`.

  mode

    整数 (曲面の色).

    mode>0

      曲面は色`"mode"`で塗られます ; 小平面の境界はカレントの線種と色で描画されます.

    mode=0:

      曲面のメッシュが描画されます.

    mode<0:

      曲面は色`"-mode"`で塗られます ; 小平面の境界は描画されません.

      曲面の色の取り扱いは, surfaceエンティティプロパティによる `color_mode`および `color_flag`オプションを用いて 行われることに注意してください (surface_properties参照).

  type

    整数 (スケール).

    type=0:

      プロットは (前の`param3d`, `plot3d`, `contour` または `plot3d1`のコールで設定された) カレントの3次元スケールで行われます.

    type=1:

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

    type=2:

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

    type=3:

      オプション`ebox`で指定したボックス境界を有する 3次元等軸プロットで,`type=1`に似ています.

    type=4:

      データで定義された境界に基づく3次元等軸プロットで, `type=2`に似ています.

    type=5:

      オプション`ebox`で指定されたボックス境界で 定義された境界に基づく3次元拡張等軸プロットで, `type=1`に似ています.

    type=6:

      データで定義された境界に基づく3次元拡張等軸プロットで, `type=2`に似ています. 軸の境界は axes エンティティプロパティによりカスタマイズできる ことに注意してください(axes_properties参照).

  box

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

    box=0:

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

    box=1:

      実装されていません (box=0と同様).

    box=2:

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

    box=3:

      曲面を囲うボックスが描画され,キャプションが追加されます.

    box=4:

      曲面を囲うボックスが描画され,キャプションと軸が追加されます.

      軸のアスペクトもaxesエンティティのプロパティによりカスタマイズ できることに注意してください (axes_properties参照).

ebox

  プロットの境界をベクトル `[xmin,xmax,ymin,ymax,zmin,zmax]`で指定します. この引数は,`flag`の`type`が`1`, `3` または `5`に設定された場合, 使用されます (対応する動作については上記参照). `flag` が指定されない場合 `ebox` は無視されます.

  指定された場合, `ebox`引数は, `data_bounds`に基づいて動作し, axesエンティティのプロパティによりリセットすることも可能であることに 注意してください. ebox のデフォルト値は[0,1,0,1,0,1]です.(axes_properties参照)

## 説明

`plot3d1` は曲面のzのレベルに基づく色の曲面を プロットします. この特別なプロット関数は,`plot3d`の後で `color_flag=1`を設定することにより有効にすることができます. ( surface_properties参照)

コマンド `plot3d1()` によりデモを参照できます.

## 例

    // z=f(x,y) によりプロットする
    t=[0:0.3:2*%pi]'; z=sin(t)*cos(t');
    plot3d1(t,t,z)
    // genfac3d により計算された小平面を用いて同様にプロット
    [xx,yy,zz]=genfac3d(t,t,z);
    clf();
    plot3d1(xx,yy,zz)
    // 複数のプロット
    clf();
    plot3d1([xx xx],[yy yy],[zz 4+zz])
    // 視点とキャプションを指定してプロット
    clf() ;
    plot3d1(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[2,2,3])
    // グリッドを指定せずにプロット
    clf()
    plot3d1(1:10,1:20,10*rand(10,20),35,45,"X@Y@Z",[-2,2,3])
    // eval3dp により計算される小平面により球をプロット
    deff("[x,y,z]=sph(alp,tet)",["x=r*cos(alp).*cos(tet)+orig(1)*ones(tet)";..
    "y=r*cos(alp).*sin(tet)+orig(2)*ones(tet)";..
    "z=r*sin(alp)+orig(3)*ones(tet)"]);
    r=1; orig=[0 0 0];
    [xx,yy,zz]=eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
    clf()

    plot3d(xx,yy,zz)
    e=gce();
    e.color_flag=1;
    scf(2);
    plot3d1(xx,yy,zz) // 2つのグラフィックは同じ

## 参照

- plot3d
- gca
- gce
- scf
- clf