年賀状書いた。
%! << /PageSize [285 420] >> setpagedevice % excerpt from Bill Casselman's % "Mathematical Illustrations - a manual of geometry and PostScript" /ctransform { load 1 dict begin /f exch def [{[3 1 roll f {moveto}]} {[3 1 roll f {lineto}]} {[7 1 roll f 6 2 roll f 6 2 roll f 6 2 roll {curveto}]} {[{closepath}]} pathforall ] newpath {aload pop exec} forall end } def /f { % u = (x^2-y^2) / 200, v = 2xy / 100 /y exch def /x exch def x dup mul y dup mul sub 150 div 1.2 x mul y mul 100 div } def /fcn { % u = ((x-100)^2-y^2) / 7 , v = 1.2xy / 7 /y exch def /x exch def x 100 sub dup mul y dup mul sub 28 div 1.2 x mul y mul 7 div } def /setrandcolor { /m exch .4 add def /r1 {rand 1 mod 1 div m add} def /r2 {rand 3 mod 17 div m add} def /r3 {rand 10 mod 17 div m add} def r1 r2 r3 setrgbcolor } def /randcgrid { currentlinewidth 10 div setlinewidth 0 .5 300 { /i exch def i 0 exch moveto 300 0 rlineto /f ctransform i 400 div setrandcolor stroke} for 0 .5 300 { /i exch def i 0 moveto 0 300 rlineto /f ctransform i 300 div setrandcolor stroke} for } def /xoffset 200 def 0 1 20{ /n exch def xoffset 10 add -10 translate randcgrid 0 xoffset sub 20 translate 0 0 moveto newpath /Titania findfont 11 scalefont setfont 0.7 0.1 0.1 setrgbcolor 12 5.5 moveto (2008 2009 2010 2011 2012 2013 2014) true charpath /fcn ctransform clip /fcn ctransform clip 1 0.5 0.55 setrgbcolor fill stroke newpath 1 0 0 setrgbcolor 120 setlinewidth 145 140 moveto 145 400 lineto stroke initclip 20 10 moveto /Georgia-Bold findfont 10 scalefont setfont 0 0 0 setrgbcolor n =string cvs show (/20) show showpage 0 0 moveto } for
"Mathematical Illustrations"を読みつつパスを変換(実質的には等角写像でぐにゅっと曲げた)して生成した。/fcn
が西暦の文字列を構成するパスを変換するための写像を表す関数で、/f
が矩形の格子を背景のテクスチャへと変換する写像を表す関数。
利用したフォントは Titania 。毎年、フォント探しに一番時間がかかってるような気がする。
毎年、親戚や家族付き合いのある友人向けに20枚くらいだけ印刷してて、今年のものは「2008年に生まれた息子も5歳を迎えます今年も来年も引き続きよろしくお願いします」と読みます。去年のものはだいぶ色きちがいになってしまったので、今年はあっさりとした配色にして、何か手書きするスペースを残しました。
0 件のコメント:
コメントを投稿