next up previous contents
Next: 文字を書く Up: PostScriptを使う Previous: 文書の構成

図形を書く

まずは線を引いてみましょう。PostScriptでは図を描くのにいくつかの重要 な概念があります。まず図形はパスといういくつかの描画動作の集合で表現さ れます。例えば四角を書くときは四角という一つのパスがあり、4辺がそのパ スに含まれます。辺を描くには現在位置からどこへという考えて線を引いてい きます。例えば線を引くには次のようになります。

        newpath

        100 200 moveto

        300 200 lineto

newpathで新しい図形が始まることを宣言し、まず現在位置を(100,200)に移動 します。そこから(300,100)まで線を引きます。これでパスは内容を持ちまし たが、まだ絵にはなっていません。紙の上に線として書き出すにはさらに動作 が必要です。

        stroke

これで線になりました。なぜこの操作が必要かと言うと、同じパスを使って塗 りつぶしをしたり、図形の切り取りをしたり、パスは色々使い道があるからで す。これで論理的には線のデータがページに描かれましたが、このページはま だ表示されません。必要な描画がすべて終わったら

        showpage

これではじめて印刷を始めていいことをプリンターが知るわけです。描画デー タをメモリー上にどんどん蓄積していきますが、印刷するという動作はページ 毎に一度だけだから、そのタイミングではじめて、それまでに蓄積されたデー タを印刷します。以上をまとめると

        %!

        %% draw a line

        newpath

        100 200 moveto

        300 200 lineto

        stroke

        showpage

このファイルをPostScriptプリンターに送ると横に一本線が引かれた紙が出て きます。

次に箱を書きましょう。

        newpath

        100 200 moveto

        200 0 rlineto

        0 200 rlineto

        -200 0 rlineto

        closepath

        stroke

        showpage

線を引いたのとよく似ていますが少し違います。まずlinetoの代わりに rlinetoを使いました。数値からわかると思いますが座標が現在位置からの相 対座標で表されています。同じようにrmovetoもあります。3つの辺をrlineto で引いたところで0 -200 rlinetoとやらずにclosepathとなっています。これ は最初にmovetoで移動した点と3つめの辺を書き終えた点を結んで図形を閉じ ることを指定したものです。これにより「閉じた図形」であることを PostScriptは知ります。このように任意の辺の数の多角形を描くことが出来ま す。

図形を塗りつぶしましょう。strokeが辺をなぞるコマンドなのに対して、塗 りつぶしはfillです。上の例のstrokeの代わりにfillとかけばいいだけです。

図形を描くコンテキストを変更します。線の太さや柄、塗りつぶしの色など です。次のように指定します。

        4 setlinewidth  % 線の幅を4ポイントに設定

        0.3 setgray     % 塗りつぶし色をグレースケールで0.3に設定

グレースケールは黒が0.0、白が1.0です。四角を薄く塗りつぶして黒い枠を描 くには

        newpath

        100 200 moveto 200 0 rlineto 0 200 rlineto -200 0 rlineto

        clothpath

        0.8 setgray     % 白っぽい背景で

        fill            % 塗りつぶし

        0.0 setgray     % 黒くして

        5.0 setlinewidth        % 5ポイント(1.5mm)幅の線で

        stroke          % 枠を書く

fillもstrokeも同じパスに対して働きました。点線を角にはsetdashを使います。

        [ 6 2 3 2 ] 0 setdash

ここで出てきた[]は配列です。中の数字は白黒それぞれの線分の長さを表して おり、配列要素の数はいくつでも構いません。この場合は1点鎖線に見えるは ずです。黒いところが6と3です。次の引数0はこの線をどこから引き始めるか で、今の場合は0ポイント。6の最初から引くということです。

ここまでは直線で図を書いてきました。円弧を書きましょう。円弧は次のよ うに記述します。

        中心の座標X 中心の座標Y 半径 開始角度 終了角度 arc

作図は反時計周りになります。時計周りに書くarcnというのもあります。パス の取りかたによって色々な図形になります。

        newpath 200 200 50 0 45 arc stroke

                                % 円弧だけ

        newpath 200 200 50 0 45 arc closepath stroke

                                % 弦をclosepathで加えた

        newpath 200 200 moveto 200 200 50 0 45 arc closepath

                                % 扇型

円を書くには初角0度終角360とします。

        newpath 200 200 50 0 360 arc stroke     % 円

直線と円弧を通って目的地まで行きましょう。

        最初の目的地X 最初の目的地Y 最終目的地X 最終目的地Y 半径 arcto

です。例えば現在100,100にいるとします。

        200 100 300 200 50 arcto

まず点200,100へまっすぐ昇ります。その点が近づくと半径50で右にややまが り、再び直線コースで点300,200へ向かいます。



next up previous contents
Next: 文字を書く Up: PostScriptを使う Previous: 文書の構成



Kinya Hibino
Sun Jan 14 21:50:32 JST 1996