PostScript

PostScript版色相環

sethsbcolorというそのものずばりのオペレータがあったので確認用にPostScript版も書いてみた。 やっぱり黄色や紫のところにはうっすらと線が見える気がする。 %!PS-Adobe-3.0 1 1 256 { /r exch def 0 1 360 { /th exch def th 360 div r 256 div 1 sethsbc…

ルーローの三角形

(-200,0)の座標を中心にして半径200√3の円弧を-30〜30度の間だけ描く …というのを120度紙を回しながら3回繰り返す %!PS-Adobe-3.0 /r 3 sqrt 200 mul def 297 421 translate newpath 1 1 3 { -200 0 r -30 30 arc stroke 120 rotate } for showpage 原点をA4…

レヴィ曲線

座標系の方を回転と伸縮させながら描くバージョン。 処理系がどう実装されているのかわかってないけど、けっこう富豪な書き方なんじゃないだろうか。 ちなみに、冒頭に書いてある数字(ここでは15)が再帰のレベル数。この数を変えると形が変わる。 %!PS-Adobe…

append

arrayとstring両対応のappendを作る。 オペレータ名はHaskellをまねて++にした。 /++ { 5 dict begin /arraytype {array} def /stringtype {string} def /y exch def /x exch def x length y length add x type exec /r exch def r x r copy length y putint…

配列処理

PostScriptでのfold,map,filter等を作ってみる。 fold forallをそのまま使うだけでfoldの動作が出来る。 以下は1から3までの和を求める例。 GS>0 [1 2 3] {add} forall == 6が、自分の好みにより引数の順番を変えたものをfoldとする。 GS>/fold {3 1 roll fo…

print関係

Rubyとの比較でおぼえる PostScript Ruby 備考 print print 改行なし = puts 改行あり == p クォートあり pstackは==を使って全スタックを表示 stackは=を使って全スタックを表示