So-net無料ブログ作成

短い線を繋げて円を描こう [PostScript]

円弧を描く PART2


直線で円を描く.png
短い直線を繋げて円を描きます。
n=100 くらいで線がスムースに見えます。
円の方程式 x=cos(th)*r、y=sin(th)*rに繰り返しでthに角度を入れることで円が描けます。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:短い線を繋げて円を描く /r 100 def % 円の半径 /sw 0 def % movetoを1回だけ使用するスイッチ /n 100 def % N角形を設定(100程度でスムースに見える) /step 360 n div def % ステップ数(角度)step=360/n 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 % 0から360-stepまでstepづつ増分しながら { } 内を繰り返す % 360-stepしているのは最後にclosepathで繋げたいから 0 step 360 step sub { /th exch def % 制御変数をth(角度)に入れる /x th cos r mul def % 円の方程式 x=cos(th)*r /y th sin r mul def % 円の方程式 y=sin(th)*r % swが0なら始点を置きswを1にする。さもなくば、終点にラインを引く sw 0 eq { x y moveto /sw 1 def} { x y lineto } ifelse } for closepath % 線を繋げる 1 0 0 setrgbcolor % 赤色 5 setlinewidth % 線幅5ポイント stroke % 描画する

直線で楕円を描く.png
楕円を描きます。
x軸とy軸の半径を変えることで楕円となります。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:短い線を繋げて楕円を描く /rx 100 def % 楕円のx軸半径 /ry 50 def % 楕円のy軸半径 /sw 0 def % movetoを1回だけ使用するスイッチ /n 100 def % N角形を設定(100程度でスムースに見える) /step 360 n div def % ステップ数(角度)step=360/n 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 % 0から360-stepまでstepづつ増分しながら { } 内を繰り返す % 360-stepしているのは最後にclosepathで繋げたいから 0 step 360 step sub /th exch def % 制御変数をth(角度)に入れる /x th cos rx mul def % 円の方程式 x=cos(th)*rx /y th sin ry mul def % 円の方程式 y=sin(th)*ry % swが0なら始点を置きswを1にする。さもなくば、終点にラインを引く sw 0 eq { x y moveto /sw 1 def} { x y lineto } ifelse } for closepath % 線を繋げる 1 0 0 setrgbcolor % 赤色 5 setlinewidth % 線幅5ポイント stroke % 描画する

多角形を描く.png
nの値を変えると多角形が描けます。図はn=8で8角形になります。
nの値を色々変えてみてください。
(コードは省略)

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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

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