surf は 代数的な曲線、曲面を描くプログラムです。
作者: Stephan Endrass さん、Johannes Beigel さん他
ホームページ:
http://surf.sourceforge.net/
バージョン: 1.0.3 (2001/04/01)
ライセンス: GPL
付属ドキュメント README を読む
付属マニュアルを読む
インストールしたらターミナル・エミュレータから
$ surf
で起動します。
ここでスクリプトを記述するのですが、サンプルのスクリプトが
/usr/share/surf/examples/
にあります。右に並んでいるボタンの load script...
をクリックして出てくるファイル選択のダイアログで、ディレクトリ
/usr/share/surf/examples/surfaces
から
quintic.pic
を選択し、execute script をクリックすると上のような美しい曲面が描かれます。
surf ホームページの
Gallery
ではいろいろな曲面を見ることができます
(ほとんどがサンプルスクリプトとして付属しています)。
上記のスクリプトを見ると
長々と面倒なことを記述しないといけないように思われるかもしれませんが、
ほとんどは位置、倍率、回転、視点、イルミネーションなどの見栄えの設定です。
曲面の定義そのものは surface
という変数に式を定義するだけです
(曲面は9つまで定義できます)。
単純な例としてマニュアルにある例題をやってみましょう。球面
x2 + y2 + z2 - 80 = 0
を描きます。
surface = x^2 + y^2 + z^2 - 80;
この1行を記述して draw surface をクリックするだけで下のような画像が得られます。
描画範囲は -10 <= x, y, z <= 10 となっています。表示サイズを変えるには各座標のスケールを指定します。 またデフォルトでは半径 10 の球面でクリップされます。 光源は最大9つまで設定でき、デフォルトでは3つ (light1, light3, light8) が点灯しています。
見栄えに関係するパラメータは configuration... をクリックして出てくるパネルで設定できます。 これらをスクリプト中で設定するには、例えばスケールなら
scale_x = 0.5; scale_y = 0.5; scale_z = 0.5;
のように記述することになります。また
draw_surface;
と書き加えておけば execute script で描画されます。
曲線の例もやってみましょう。 デカルトの葉線
x3 + y3 - 3axy = 0
を描くには
double a = 4.0; curve = x^3 + y^3 - 3.0*a*x*y;
のように記述して draw curve をクリックします (このように自前の変数が使えます)。 a の値を変えると形が (この場合は正確には大きさが) 変わります。
デフォルトでは半径 10 の円でクリップされます。
クリップしないようにするには configuration... の clip タブを開いて
Clip at: のところで none を選択します。draw curve では
clip は sphere と none 以外は無効です。
曲面の場合と同じように、
draw_curve;
を書き加えておけば execute script で描画されます。ただし、この場合は画面の消去が自動では行われないので
clear_screen;
を先に書いておく必要があります。
逆に言えば複数の曲線を重ね描きしたり、曲面の表示の上に曲線
(や断面) を描くことができます。
曲線のサンプルスクリプトは
/usr/share/surf/examples/curves
にあります。
制御構文としては唯一
if( INTEGER-EXPRESSION ) goto LABEL;
が使えます。
コマンドラインオプションは man page を参照するか、
$ surf --help
で表示します。
HTML 形式のマニュアルは
/usr/share/doc/surf-1.0.3/docs/manual.html
にあります (記述内容に現状と違っているところがあるようです。
少なくとも clip のモードに関しては変更になっています)。
LinuxMLD 5,6,7 用の RPM
surf-1.0.3-1_mlb2.i386.rpm (279,385 bytes)
をインストールします。
rpm コマンドでインストールするにはスーパーユーザになって
# rpm -i surf-1.0.3-1_mlb2.i386.rpm
とします。
MLD 5,6 では
Gnome の GUI でインストールすることもできます。
surf は最初 (Version 0.91 まで) SUN の X Window ツールキット XView で開発されました。興味のある方は The surf homepage (古いホームページ) を参照してください。
Web 上の参考になるページを御紹介します。
いくつかの描画例と、マニュアルの日本語訳を公開されています。
「歴史的曲線」などの解説があります。
いろいろな曲面を 石膏モデルの画像 (東京大学大学院数理科学研究科) で紹介されています。 残念ながら式は示されていません。
surf のソース付き。Algebraic Surface のリンク集もあります。
関数グラフを描くアプリケーションについては geg のページを参照してください。