So-net無料ブログ作成
PostScript ブログトップ
前の10件 | -

PostScriptグラフィックスについて [PostScript]

現在、手書きPostScriptグラフィックス講座の記事作成中です。
ある程度まとめてからアップしたいと思います。

2017年2月26日、一部公開しました。
間違いやらがあると思いますが、
随時、追加・訂正・削除します。

こんな物を制作しています。

高次関数170_0_000.jpg
タグ:PostScript
nice!(0) 
共通テーマ:アート

Postscriptについて [PostScript]

PostScriptを始めよう


PostScriptとは

PostScriptは簡単に言うとページ記述言語でありプログラミング言語であると言うことです。
PostScriptについて詳しく知りたい方は下記をご覧ください。
PostScript - Wikipedia

PostScriptグラフィックス

この講座の目的はPostScriptでグラフィックスを作成することです。
グラフィックスを作成するのに何故PostScriptを使うのかと言うと、短い記述で簡単に図形が作成できるからです。またベクトルグラフィックスなので、どんなサイズにも展開できます。

他のプログラム言語ではバージョンアップして、機能が増えたり記述が変更になったりしてついて行けなくなったりすることがあります。
また市販のプログラム本で、途中まではやさしいのに、急に難しくなって挫折したことがよくあります。
sample.png
この講座では覚えていくことを少しづつ積み重ねていきます。習得するにはまず手を動かすこと。コピペでは身に付きません。1度で分かろうなんて思わないでください。何度も何度も読み返していくうちに分かるようになります。
PostScriptはグラフィックスに特化しているので覚えることは限られています。またアップデートしないので、仕様が変わったり、新しい命令等が増えたりということがありません。仕様が変わらないので将来的に書き直す必要もありません。またPostScriptに関する古いサイトが今でも参考になります。

PostScriptのデメリットは便利な機能がない。進化しない。イベントがない、UIがない、インタラクティブな作品が作れない。
ページ記述言語としては超メジャーですが、プログラミング言語としては超マイナーなので、参考になるサイトが少ない、開発環境がないなど。。。。。まあデメリットをあげればきりがないのですが、何とかなるでしょう。

プログラムを書くことが目的ではないのと、独学ですので間違っていることもあるかもしれません。
プログラムに関しては素人ですので、ご了承ください。
またテキストやフォント、ベジエ曲線は扱いません。これらはAdobe Illustratorでやった方が簡単なので。
目次の最初から読み進めて、少しづつオペレータやコードの書き方を覚えていってください。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

PostScriptを書くための環境 [PostScript]

PostScriptを始めよう

PostScriptを書くためにはテキストエディタとインタープリタ(プログラムを実行するもの)が必要です。
インタープリタとしてはGhostscriptなどがあります。
Ghostscript - ウィキペディア

プログラムツール

筆者はMac環境なので、下記のツールを使用しています。
(1)テキストエディタ
(2)プレビュー
(3)Acrobat Distiller または (4)コンソール

アプリアイコン.jpg

(1)のテキストエディタはmiを使用。ミミカキエディット時代から愛用しています。
キーワードに色を付けられるため、開発環境のないPostScriptでは重宝しています。
〈参考リンク〉mi - テキストエディタ

preview.jpg

(2)のプレビューは2つあります。Finderウインドウのカラム表示時のアイコンプレビューとアプリのプレビューです。
Finderウインドウにアイコンプレビュー画像が表示されない時はコードにエラーがあるか、フラクタルのような描画に時間がかかる時です。簡易デバッグとしてエラーがあるかないかが分かります。
アプリのプレビューでEPSファイルをPDFに変換します。エラー時には(4)のコンソールを見ます。

(3)Acrobat Distillerは本来、ドキュメントをPDFに変換するソフトですが、作成したEPSファイルを変換するときにメッセージログが出るので、大雑把なデバッグができます。

distiller_msg.png

(4)Acrobat Distillerを持っていなければコンソールでエラーログを見ることができます。

コンソール.png

作業の流れ

(1)テキストエディタでPostScriptプログラムを書き、EPSファイルとして保存。
(2)FinderウィンドウのカラムでEPSファイルを表示。アイコンで画像が現れたらエラーはないことが分かる。
アイコンで画像が出ないときは、プログラムを見直す。
Acrobat Distillerで開く。PDF ファイルを書き出すことができる。
またはアプリのプレビューで開く。ファイルとしてPDF、PNG、JPEG、TIFFフォーマットで解像度や品質を設定して書き出すことができる。



ご注意)本ブログのプログラムはMac OS以外のOSでは検証していませんので、ご了承ください。
タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

PostScriptの基礎 [PostScript]

PostScriptを始めよう

コード
コードは半角英数字・記号を使います。全角を含めないようにしてください。空白は半角、タブ、改行いずれも同じ動作になります。
1 2 add と
1
2
add は同じです。
数学記号がほとんど使えません。+(加算)はadd、-(負号)はマイナスとして使えます。減算はsubです。*(乗算)はmul、/(除算)他で使用するので使えません。divが除算となります。

書式

逆ポーランド記法を使用します。
一般的な数式は 1 + 2 のように演算する記号が演算されるものの中にあります。(中置記法)
逆ポーランド記法または後置記法では 1 2 + のように書きます。
これは日本語の語順に似ており、1と2を足す と読めます。
1 + 2 * 3 ではどうでしょう。
1  2  3  *  + 後置記法ではこうなります。PostScriptで書くと
1 2 3 mul add になります。
2と3を掛けてその答えに1を足す。と読みます。
なぜ後置記法を採用しているかというとPostScriptがスタックというデータ構造を使っているためです。
スタックは後置記法と相性がいいからです。
本講座ではスタックを積極的に使ったプログラムではなく、変数を使ったプログラムで行きます。
スタックを使うとプログラムがシンプルになりますが、データの流れがつかめないし、分かりにくいのです。
かといって絶対使わないという訳ではなく、使わざるを得ない場合があります。
それは後ほど記します。

stack.png

コメント

%から始まり改行までがコメントになります。日本語、全角/半角英数字・記号が使えます。他の言語のように文章のブロックを一括でコメントとするような便利なものはありません。
(例)
%他の言語のように文章の
%ブロックを一括でコメントとする
%ような便利なものはありません。

座標系

座標は左下を原点とし、Y軸上方向、X軸右方向が正です。
座標は移動・変形が可能です。

00-01原点.png
タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

水平・垂直線を描く [PostScript]

直線を描く


PostScriptで水平線02-01水平線.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 newpath % パスの初期化 20 120 move % 始点へ移動 220 120 linneto % 始点と終点の間にパスを引く stroke % 線を描画


PostScriptで水平線を描いてみましょう。コード内の赤文字のコメントを参照してください。

%!PS-Adobe-3.0 EPSF-3.0はPostscriptのバージョンがPostscript3、EPS3.0フォーマットを表しています。これがないとAdobe Illustratorでは開くことができません。
%%BoundingBox: 0 0 240 240はパス全体を囲む領域の指定で、左下の座標が(0,0) 原点で、右上の座標が(240, 240) の正方形を表しています。デフォルトで単位はポイントです。
上記2行はEPSァイルで必須のコメントです。

newpathは新しいパスを開始する時に使用します。
パスは線を引いたり、塗りつぶし図形を定義するもので、直線と曲線から構成されます。

movetoは始点、linetoは終点を指定します。2つの数値はx座標とy座標です。
直線を引く場合は必ず始点が必要です。

この時点では線は引かれていますが、描画されていません。
strokeを使って初めて描画されます。
strokeを行うとデータは消費されてなくなります。
この線はデフォルトで線幅1ポイント・色が黒となります。

newpathやmoveto、strokeなどはオペレータ(演算子)、またオペレータの前の数値等は演算の対象でオペランドと(被演算子)言います。

02-01-水平線の仕組み.png

【オペレータの説明】
newpathパスを初期化する
x1 y1 moveto始点を(x1,y1)座標値に設定する
x2 y2 lineto線分を(x2,y2)座標値まで追加する
strokeパスに沿って線を描画する

strokeは線幅、色、先端・接続の形状、破線パターン等のパラメータを参照します。 パスを引く時(構築時)には参照されません。 strokeで描画が終了すると、newpathが呼び出されて、パスがクリアされます。 なのでstroke後に新たに線分を追加する場合はnewpathは必要ないということです。


今度は垂直線を描いてみましょう。単に座標を変更するだけです。

02-03垂直線.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 newpath % パスの初期化 120 100 move % 始点へ移動 120 -100 linneto % 始点と終点の間にパスを引く stroke % 線を描画

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

座標の移動 [PostScript]

直線を描く

原点が左下だと何かと不都合なので、画面中央にtranslateを使用して原点を移動します。
図では例として赤の点線で座標軸を表示しています。


02-02-02水平線-2.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 -100 0 move % 始点へ移動 100 0 linneto % 始点と終点の間にパスを引く stroke % 線を描画


【オペレータの説明】
x y translate原点を(x,y)座標値に設定する(平行移動)


垂直線と水平線で十字を描いてみましょう。

02-04十字線.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 -100 0 move % 水平線を引く 100 0 lineto 0 100 move % 垂直線を引く 0 -100 lineto stroke % 線を描画

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

線幅を変えてみよう [PostScript]

直線を描く

十字線の線幅を変えてみましょう。
線幅を変えるにはsetlinewidthを使います。

02-05十字線線幅.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 5 setlinewidth % 線幅を5ポイントに設定 newpath % パスの初期化 -100 0 move % 水平線を引く 100 0 lineto 0 100 move % 垂直線を引く 0 -100 lineto stroke % 線を描画



【オペレータの説明】
線幅 setlinewidth線幅を設定する


線幅を個別に変えてみましょう。それぞれに線幅を設定し、strokeします。

02-04水平線+垂直線+太さ2.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 10 setlinewidth % 線幅を10ポイントに設定 -100 0 move % 水平線を引く 100 0 linneto stroke % 線を描画 5 setlinewidth % 線幅を5ポイントに設定 0 100 move % 垂直線を引く 0 -100 lineto stroke

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

線をグレーにしてみよう [PostScript]

直線を描く

十字線の色を変えてみましょう。
setgrayを使ってグレー50%にします。数値は0〜1を指定します。0で黒、1で白になります。50%は0.5になります。

02-06十字線線幅グレー.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 5 setlinewidth % 線幅を5ポイントに設定 0.5 setgray % グレー50%に設定 newpath % パスの初期化 -100 0 move % 水平線を引く 100 0 lineto 0 100 move % 垂直線を引く 0 -100 lineto stroke % 線を描画



【オペレータの説明】
数値 setgrayグレー値を設定する 0〜1  0:黒 1:白

個別に線の色を変えてみましょう。

02-04水平線+垂直線+太さ2グレー.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 10 setlinewidth % 線幅を10ポイントに設定 .5 setgray % 50%グレイ 小数点前の0は省略可能 -100 0 move % 水平線を引く 100 0 linneto stroke % 線を描画 5 setlinewidth % 線幅を5ポイントに設定 .8 setgray % 20%グレイ 0 100 move % 垂直線を引く 0 -100 lineto stroke

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

線に色を付けてみよう [PostScript]

直線を描く

線を赤くしてみましょう。
R G B setrgbcolor RGB値は0〜1をそれぞれ指定します。
例えば 1 .5 0 でオレンジ 1 1 0 で黄色となります。この数値を色々変えてみてください。

02-07十字線線幅赤.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 5 setlinewidth % 線幅を5ポイントに設定 1 0 0 setrgbcolor % 赤に設定 newpath % パスの初期化 -100 0 moveto 100 0 linneto % 水平線を引く 0 100 moveto 0 -100 linneto % 垂直線を引く stroke % 線を描画


【オペレータの説明】
R G B setrgbcolorRGBカラーを設定する 0〜1
CMYK、HSBカラーでも色設定できます。
C M Y K setcmykcolorCMYKカラーを設定する 0〜1
H S B sethsbcolorHSBカラーを設定する 0〜1


個別に線の色を変えてみましょう。

02-04水平線+垂直線+太さ2カラー.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 10 setlinewidth % 線幅を10ポイントに設定 .5 1 0 setrgbcolor % 黄緑に設定 -100 0 moveto 100 0 linneto % 水平線を引く stroke % 線を描画 5 setlinewidth % 線幅を5ポイントに設定 0 .5 1 setrgbcolor % 青に設定 0 100 moveto 0 -100 linneto % 垂直線を引く stroke

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

回転してみよう [PostScript]

直線を描く

図形をrotateで回転させてみましょう。他のプログラム言語などではラジアン(弧度法)が使われますが、Postscriptでは360度を1周とする度数法を使用します。反時計回りで回転します。
図形だけが回転したように見えますが、座標全体が回転していることに注意してください。
図では参考のため座標軸等を表示しています。
座標系のオペレータは順番が違うと、意図した表示にならないので注意が必要です。


02-07十字線線幅赤回転.png
【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 120 120 translate % 座標の原点を中央に移動 45 rotate % 座標を45度回転 5 setlinewidth % 線幅を5ポイントに設定 1 0 0 setrgbcolor % 赤に設定 newpath % パスの初期化 -100 0 moveto 100 0 linneto % 水平線を引く 0 100 move 0 -100 linneto % 垂直線を引く stroke % 線を描画



【オペレータの説明】
角度 rotate座標軸の原点を中心に反時計回りに回転する。マイナスの角度であれば時計回りになる。

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート
前の10件 | - PostScript ブログトップ