So-net無料ブログ作成
検索選択

平稲妻を描いてみよう [PostScript]

家紋を描く


家紋11平稲妻.png
平稲妻という家紋で、稲妻をこんな形にデザインするとは驚きです。
真ん中の短い横線を1単位とすると直線の長さが規則的になっています。(下図)1、1、2、2、3、3....
この1単位に任意の大きさ(w)を掛けて適度な大きさにします。

参考:日本の家紋/発行2004年5月1日 初版発行/発行者 安田英樹/発行所 株式会社青幻舎

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:家紋を描く(平稲妻) /w 30 def % 全体の大きさを制御 /r { % 相対的長さで線を引くプロシージャ % ★から渡される値は順番が逆になることに注意 /dy exch w mul def % y軸方向の長さをw倍する /dx exch w mul def % x軸方向の長さをw倍する dx dy rlineto % 相対的長さで線を引く } def 0 0 240 240 rectfill % 黒背景 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 1 setgray % 白色 % バックの四角形 -3 w mul -3 w mul w 6 mul w 6 mul rectfill 0 0 moveto % (0,0)に始点を置く -1 0 r % ★ 線を引く(-1はdxに、0はdyに引き渡される) 0 1 r 2 0 r 0 -2 r -3 0 r 0 3 r 4 0 r 0 -4 r -5 0 r 0 setgray % 黒色 2 setlinewidth % 線幅2ポイント stroke % 線の描画

家紋11平稲妻説明.png
同じ家紋を今度は配列を使って描いています。
考え方は上のプログラムと同じで、直線の長さを配列に入れているだけです。
図形は上と同じなので省略します。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:家紋を描く(三ツ稲妻菱) % 配列を使用する /inazuma [ [-1 0] [0 1] [2 0] [0 -2] [-3 0] [0 3] [4 0] [0 -4] [-5 0] ] def /w 30 def % 全体の大きさを制御 0 0 240 240 rectfill % 黒背景 120 120 translate % 座標の原点を中央に移動 /cmtx matrix currentmatrix def % カレント座標を保存する newpath % パスの初期化 1 setgray % 白色 % バックの四角形 -3 w mul -3 w mul w 6 mul w 6 mul rectfill 0 0 moveto % (0,0)に始点を置く w dup scale % 座標を30倍に拡大 0 1 8 { /index exch def % 制御変数をindexに入れる % 配列(inazuma)から順に(index)座標を取り出し(get)、スタックに置き(aload)、 % オペランドは削除(pop)して直線を引く(rlineto) inazuma index get aload pop rlineto } for cmtx setmatrix % 座標を拡大前の座標に復元 0 setgray % 黒色 2 setlinewidth % 線幅2ポイント stroke % 線の描画

家紋11三ツ稲妻菱.png
平稲妻を三つ組み合わせて「三ツ稲妻菱」を描きます。平稲妻を座標変換して菱形にします。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:家紋を描く(三ツ稲妻菱) /w 15 def % 全体の大きさを制御 /r { % 相対的長さで線を引くプロシージャ % ★から渡される値は順番が逆になることに注意 /dy exch w mul def % y軸方向の長さをw倍する /dx exch w mul def % x軸方向の長さをw倍する dx dy rlineto % 相対的長さで線を引く } def /inazuma { newpath % パスの初期化 1 setgray % 白色 % バックの四角形 -3 w mul -3 w mul w 6 mul w 6 mul rectfill 0 0 moveto % (0,0)に始点を置く -1 0 r % ★ 線を引く(-1はdxに、0はdyに引き渡される) 0 1 r 2 0 r 0 -2 r -3 0 r 0 3 r 4 0 r 0 -4 r -5 0 r 0 setgray % 黒色 2 setlinewidth % 線幅2ポイント stroke % 線の描画 } def % 図形を菱形にするための座標変換の数値 /sx { 30 cos } def /sy { 30 sin } def /sx2 { -30 cos } def /sy2 { -30 sin } def 0 0 240 240 rectfill % 黒背景 120 120 translate % 座標の原点を中央に移動 % 菱形を描く gsave % グラフィックス状態の保存 [ 270 cos 270 sin sx sy 41 -20 ] concat % 座標変換 inazuma % 右側面 grestore % グラフィックス状態の復帰 gsave [ sx neg sy2 neg 0 -1 -41 -20 ] concat inazuma % 左側面 grestore gsave [ sx sy sx neg sy2 neg 0 50 ] concat inazuma % 天面


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

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました