読者です 読者をやめる 読者になる 読者になる

Asymptoteの三次元表示

 前に書くと言った、Asymptoteの三次元表示についてです。

 インストール方法については、ここでは書きませんが、MacTeX(の中のTeX Live)をインストールすれば、入ります。

 asymptoteは、日本語の情報が少なく、困っています。
 なお、ターミナルでasyと打って、対話モードに入り、helpと打ち込むと、英語のマニュアルを見ることができます。

 さて、三次元についてですが、例えば、先ほどのマニュアルにある、この例を使いましょう。
import three;
 
currentprojection=orthographic(5,4,2,center=true);
size(5cm);
size3(3cm,5cm,8cm);
 
draw(unitbox);
dot(unitbox,red);
 
label("$O$",(0,0,0),NW);
label("(1,0,0)",(1,0,0),S);
label("(0,1,0)",(0,1,0),E);
label("(0,0,1)",(0,0,1),Z);
これを、unitbox.asyなどという名前で保存し、ターミナルで
asy -f pdf unitbox.asy
と打ち込めば、unitbox.pdfが出力されます。
しかし、これをプレビュー.appで開いても、何も表示されません。
asy unitbox.asy
と打ち込めば、epsファイルが出力されますが、こちらならば表示されます。

これは、pdfで出力するときは、PCRという高レベルの規格を使うらしいのですが、これをサポートしているpdfビュアーが、Adobe Readerぐらいしかないのが原因だそうです。
先ほどのファイルも、Adobe Readerを使えば、表示でき、しかもマウスでドラッグすれば、回転等もできるはずです。

しかし、回転できるのは便利ですが、Adobe Readerでしか見れないというのは問題です。私のように、プレビュー.appしか使わない人もいますし。
 そこで、先ほどのファイルを、こう編集してみましょう。
render=0; 
 
import three;
 
currentprojection=orthographic(5,4,2,center=true);
size(5cm);
size3(3cm,5cm,8cm);
 
draw(unitbox);
dot(unitbox,red);
 
label("$O$",(0,0,0),NW);
label("(1,0,0)",(1,0,0),S);
label("(0,1,0)",(0,1,0),E);
label("(0,0,1)",(0,0,1),Z);
赤色の部分が、付け加えたところです。 一行だけです。
これでもう一度pdfを生成してみると、どうですか、プレビュー.appでも表示できませんか?

しかし、毎回一行書き加えるのも面倒です。
なので、config.asyを編集してしまいましょう。

これは、
/Users/(username)/.asy/config.asy
にあります。
.asyフォルダと、config.asyがなければ、ホームディレクトリ下に、作って下さい。
なお、.asyフォルダは、隠しフォルダなので見えませんが、finderの上のメニューから、移動→フォルダへ移動で上のパスを入力するか、ターミナルで移動すれば見ることができます。
ダッシュボードアプリで、隠しフォルダの表示/非表示を切り替えられるアプリもあるので、入れておくのも便利です。

あればそれを編集すればいいのですが、なければ中身はこんな感じにしておけばOKです。
import settings;
psviewer="gv";
gs="gs";
outformat="pdf";
render=0;
 1〜3行目はあまり気にしなくてもいいですが、これで、プレビュー.appでも表示できるようになり、また、デフォルトで出力がpdfになります。
 pdfにしたくない人は、4行目を削除しておけば大丈夫です。