見出し画像

奥義かどうかは判らないけれど(その4)

 この連載?を書きながらMetaPost話をググってて見つけた次の説明はなるへそ面白いものだと思わせるものだ。

MetaPost has an integrated solver for linear equations and even
equation systems! So we have:
I Assignments, like a := 3;
I Equations, like 3 = 4b;
Know when to use := and when to use =.

 MetaPostのデータ型は(基本的には)10種類あります。ググると出てくるユーザーズマニュアル(A User's Manual)には次のようにあります。

MetaPost actually has ten basic data types: numeric, pair, path, transform, (rgb)color, cmykcolor,
string, boolean, picture, and pen

 数値型 (numeric),点の座標やベクトルや複素数のような2つの数のペアの型(pair),直線や曲線などを扱うためのパス(path),変形(線形変換つまり?アフィン変換)の型(transform),RGBな色は3つの数の組として(color),CMYKな色は4つの数の組として(cmykcolor),文字列(string),当然だけど真偽値(boolean),画像自体を扱う型(picture),そして図を描くときのペン先の型(pen)です。

 例えば,新しく x を数値用の変数とする場合, numeric x; と書く。所謂変数の型の宣言だ。そして,(初期)値を2にする場合, x=2; と書くのだけど,これはよくある代入ではなくて,方程式扱いという事。そしてMetaPostは x=2 なのだと内部で解釈する。このとき,最初に x=2; と書かずに x+3=5; と書いても良いというわけだ。少し MetaPost を弄ると分かるが,変数に別の値を「代入」する,つまり一旦決まっている値を変更したい場合は, := を使わないと文句を言われます。

 次の図を見て下さい。

此れは,

pair a,b,x,y;
a=(4,6);b=(-2,4);x+y=a;x-y=b;

として,少し手を加えて原点 (0, 0) から4つの pair が表す点へのベクトルを描かせたものです。濃い灰色の矢印が a と b ,橙色の矢印が x,緑の矢印が y を表しています。何が起こっているか分かるでしょうか。ベクトルの連立方程式を勝手に?解いてくれているわけです。別の言い方をすれば間接的に x と y を指定できるわけです。これは画期的な(もう随分と古いシステムだけど)仕様です。おそらく全ての型で此の手が使えるのでしょう。(試してない...いやいや,そういうことを改めて一つずつ試すのもこの連載の目的だったりするのですが。)



この記事が気に入ったらサポートをしてみませんか?