

九ツ組木という家紋です。長い板が6枚重なっているのかと思ってプログラムを組みましたが、9つ組木なので、短い板が9枚に見えるから九ツなのでしょうか。…
画面の幅(240pt)を9等分し、その一つの幅をaにします。板の短辺をaにして、他の長さをa×○で表しています。
図のように組んでいき、回転させています。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:家紋を描く(九ツ組木) /a 240 9 idiv def % 幅を定義 /bk { 0 setgray stroke } def % 黒線 /wh { 1 setgray fill } def % 白で塗りつぶし /kaku { % 板のプロシージャ定義 a .5 mul neg 3.5 a mul moveto a 0 rlineto % 長方形を引く 0 a 7 mul neg rlineto a neg 0 rlineto closepath % グラフィックス状態を保存し白で塗りつぶし、グラフィックス状態を復元し黒線を描く gsave wh grestore bk } def 0 0 240 240 rectfill % 黒背景 120 120 translate % 座標の原点を中央に移動 45 rotate % 全体を回転 gsave gsave gsave % グラフィックス状態を3回保存 kaku % 真ん中の板(垂直方向) 90 rotate % 90度回転(水平方向) 2 a mul 0 translate kaku % 上の板 a 4 mul neg 0 translate kaku % 下の板 grestore % グラフィックス状態を復元 a 2 mul 0 translate kaku % 右の板(垂直方向) a 4 mul neg 0 translate kaku % 左の板 grestore % グラフィックス状態を復元 90 rotate % 90度回転(水平方向) kaku % 真ん中の板(下図真ん中) grestore % グラフィックス状態を復元 a .5 mul neg 1.5 a mul moveto a 0 rlineto 0 a 3 mul neg rlineto a neg 0 rlineto closepath gsave wh grestore bk % 真ん中の板を隠すための垂直方向の短い板(下図右) |
コメント