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

多角形を描いてみよう [PostScript]

三角形・多角形を描く


多角形.png
Postscriptで多角形を描いてみましょう。
・直線を繋いで円を描いてみようでは円の方程式を使って多角形を描きましたが、今回はrotateを使って頂点を回転させて線を繋ぐ方法です。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:多角形を描く 120 120 translate % 座標の原点を中央に移動 /n 8 def % N角形 3以上 /k 360 n idiv def % 角度 /r 90 def % 図形の半径 /sw 0 def % movetoを一回だけ使用するためのスイッチ newpath % パスの初期化 0 k 360 k sub { % 0からKづつ増やし360-Kになるまで{ }内を繰り返す pop % 制御変数を捨てる % swが0ならば始点を、さもなくば線を引く sw 0 eq { 0 r moveto /sw 1 def } { 0 r lineto } ifelse k rotate % 座標をK度回転する 0 r lineto % 線を引く } for closepath % 最後に線をつなぐ .5 .7 .7 sethsbcolor 青緑色にする 10 setlinewidth 線幅10ポイント stroke % 描画する


多角形2.png
次は応用編です。for文を足して、図形の大きさと線幅を変化させてみましょう。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:多角形を描く 120 120 translate % 座標の原点を中央に移動 /n 8 def % N角形 3以上(整数のみ) /k 360 n idiv def % 角度 % r 図形の半径 /sw 0 def % movetoを一回だけ使用するためのスイッチ /lw 10 def % 線幅 .5 .7 .7 sethsbcolor 青緑色にする newpath % パスの初期化 10 10 100 { % 0から10づつ増やし100になるまで{ }内を繰り返す /r exch def %制御変数をr(半径)に入れる 0 k 360 k sub { % 0からKづつ増やし360-Kになるまで{ }内を繰り返す pop % 制御変数を捨てる % swが0ならば始点を、さもなくば線を引く sw 0 eq { 0 r moveto /sw 1 def } { 0 r lineto } ifelse k rotate % 座標をK度回転する 0 r lineto % 線を引く } for closepath % 最後に線をつなぐ /sw 0 def % スィッチのリセット /lw lw 1 sub def % 線幅から1を引く lw setlinewidth % 線幅を設定 stroke % 描画する } for


【オペレータの説明】
整数1 整数2 idiv整数1を整数2で割って、整数の商を返す。小数点以下は切り捨て。
(例)idivとdivの違い
3 2 idiv → 1
3 2 div → 1.5



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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

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