`ifplot', `conplot', `plot', `polarplot', `plotover'
----------------------------------------------------

ifplot(FUNC [,GEOMETRY] [,XRANGE] [,YRANGE] [,ID] [,NAME])
     :: 2 変数関数の実数上での零点を表示する.

conplot(FUNC [,GEOMETRY] [,XRANGE] [,YRANGE] [,ZRANGE] [,ID] [,NAME])
     :: 2 変数関数の実数上での等高線を表示する.

plot(FUNC [,GEOMETRY] [,XRANGE] [,ID] [,NAME])
     :: 1 変数関数のグラフを表示する.

polarplot(FUNC [,GEOMETRY] [,THETARANGE] [,ID] [,NAME])
     :: 極形式で与えられた曲線を表示する.

plotover(FUNC,ID,NUMBER)
     :: すでに存在しているウィンドウへ描画する.

RETURN
     整数

FUNC
     多項式

GEOMETRY  XRANGE  YRANGE  ZRANGE
     リスト

ID  NUMBER
     整数

NAME
     文字列

   * `ifplot()' は, 2 変数関数 FUNC の実数上での零点の
     グラフの表示を行う. `conplot()' は, 同様の引数に対し,
     等高線の表示を行う.  `plot()' は 1 変数関数のグラフの表示を行う.
     `polarplot()' は 極形式 R=F(THETA)
     で表された曲線のグラフの表示を行う.

   * これらは OpenXM サーバとして実現されている. UNIX 上では `ox_plot'
     が, Windows 上では `engine' がこれらの機能 を提供しており,
     これらは Asir の標準ライブラリディレクトリにある.  アクティブな
     `ox_plot' の id が ID として指定された場合,
     そのサーバが用いられる. id の指定がない場合には, 起動されて
     いるサーバのうち, `ox_plot' があればそのサーバが用いられる.
     `ox_plot' が起動されていない場合には, `ox_launch_nox()'
     が自動的に実行されて, `ox_plot' が 立ち上がり, それが用いられる.

   * 引数の内, FUNC は必須である. その他の引数はオプションである.
     オプションの形式およびそのデフォルト値 (カッコ内) は次の通り.

    GEOMETRY
          ウィンドウのサイズをドット単位で [X,Y] で指定する.
          ([`300',`300']. )

    XRANGE  YRANGE
          変数の範囲の指定で, [V,VMIN,VMAX] で指定する.
          (いずれの変数も [V,`-2',`2'].)  この指定がない場合, FUNC
          に含まれる変数の内変数順序の上の変数 が `x', 下の変数が `y'
          として扱われる. これを避けるためには XRANGE, YRANGE
          を指定する. また, FUNC が 1 変数の 場合,
          これらの指定は必須となる.

    ZRANGE
          `conplot()' の場合のみ指定できる. 形式は [V,VMIN,VMAX
          `[',STEP `]'] で, STEP が指定され た場合には, 等高線の間隔が
          (VMAX-VMIN)/STEP となる.  ([Z,`-2',`2',`16'].)

    ID
          遠隔プロセスの番号, すなわち `ox_launch()'
          が返した番号を指定する.  (一番最近に作られ,
          かつアクティブなプロセスに対応する番号.)

    NAME
          ウィンドウの名前. (`Plot'.)  生成されたウィンドウのタイトルは
          NAME:N/M となる.  これは, プロセス番号 N のプロセスの, M
          番のウィンドウを意味する.  この番号は, `plotover()'
          で用いられる.

   * 一つのプロセス上で描画できるウィンドウの数は最大 128 個である.

   * `plotover()' は, 指定したウィンドウ上に, 引数である 2 変数多項式の
     零点を上書きする.

   * 描画終了後のウィンドウ上で, マウスの左ボタンを押しながらのドラッグ
     で範囲を指定しボタンを離すと新たなウィンドウが生成され, 指定した
     範囲が拡大して表示される. ドラッグは左上から右下へと行う.
     ドラッグを始めた後キャンセルする場合は, マウスポインタを始点の上か
     左に持っていってボタンを離せばよい. 新しいウインドウの形は, 指定
     領域と相似で, 最大辺が, 元のウィンドウの最大辺と一致するように
     定められる. 以下で説明する `precise' が on の場合,
     選択した領域が同一 window 上で書き直される.

   * ウィンドウ内で右ボタンを押すと,
     その点の座標がウィンドウの下部に表示される.

   * `conplot()' で生成したウィンドウにおいて,
     ウィンドウの右側のマーカを 中ボタンでドラッグすると,
     対応する等高線の色が変わり, 右上の
     ウィンドウに対応するレベルが表示される.

   * UNIX 版ではいくつかのボタンにより いくつかの設定変更,
     操作ができる. UNIX 版では次のボタンがある.

    `quit'
          window を破壊する. 計算を中断する場合, `ox_reset()' を用いる.

    `wide (トグル)'
          現在の表示部分を縦横各 10 倍した領域を表示する.
          現在表示されている範囲は
          この表示において中央部に長方形で示される.
          この表示で範囲指定を行うと,
          その範囲が新しいウィンドウに描画される.

    `precise (トグル)'
          選択領域を, 整数演算により, より正確に再描画する. これは,
          FUNC が 有理数係数の 2 変数多項式の場合にのみ有効である.
          このモードでは Sturm 列 と二分法により,
          区間内の零点の個数を正確に求めていくもので, デフォルトの
          計算法よりも正確な描画が期待できる. ただし,
          描画時間は余計にかかる場合が 多い.
          この説明から明らかなように,
          この機能は有理数係数の多項式の描画に対 してのみ有効である.
          ((x^2+y^2-1)^2 の描画で試してみよ.)

    `formula'
          対応する式を表示する.

    `noaxis (トグル)'
          座標軸を消す.

   * `ox_plot' が起動されるマシンによっては, スタックを大量に使用する
     ものもあるため, `.cshrc' でスタックサイズを大きめ (16MB 程度) に
     指定しておくのが安全である. スタックサイズは `limit stacksize 16m'
     などと指定する.

   * `X' では、ウインドウの各部分について resource により
     色付けや、ボタンの形を変えることができる。 resource
     の指定の仕方は以下の通り。（デフォルトを示しておく）
     `plot*form*shapeStyle' は、rectangle, oval, ellipse,
     roundedRectangle が、指定できる。

          plot*background:white
          plot*form*shapeStyle:rectangle
          plot*form*background:white
          plot*form*quit*background:white
          plot*form*wide*background:white
          plot*form*precise*background:white
          plot*form*formula*background:white
          plot*form*noaxis*background:white
          plot*form*xcoord*background:white
          plot*form*ycoord*background:white
          plot*form*level*background:white
          plot*form*xdone*background:white
          plot*form*ydone*background:white


参照
     *Note `ox_launch ox_launch_nox ox_shutdown': ox_launch
     ox_launch_nox ox_shutdown, *Note `ox_reset ox_intr
     register_handler': ox_reset ox_intr register_handler

