So-net無料ブログ作成

SINカーブを描こう [PostScript]

曲線を描く


サイン波.png
PostScriptでSINカーブを描きます。
短い直線を繋げて曲線とします。th(角度)を細くするとスムースな曲線になります。
SINカーブの数式をPostScriptで書くと下記になります。
x=a*th → /x a th mul def
y=b*sin(th) → /y b th sin mul def
a:波の長さ、b:波の高さ、th:角度の値を色々変えてみましょう。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:SINカーブを描く /a .3 def % 波の長さ /b 80 def % 波の高さ /sw 0 def % 始点を置くためのスイッチ 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 -360 1 360 { % -360から360まで角度 を1づつ増やして{ }内を繰り返す /th exch def % 制御変数をth(角度)に入れる /x a th mul def % a×th 波の長さを変化させる /y b th sin mul def % b×sin(th) 波の高さを変化させる % swが0の時始点をさもなくば 線を引く sw 0 eq { x y moveto /sw 1 def }{ x y lineto } ifelse } for stroke % 線を描画する

サイン波2.png
for文を追加して、波の高さを変化させて見ましょう。
制御変数を波の高さbに入れていきます。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:SINカーブを描く /a .3 def % 波の長さ /sw 0 def % 始点を置くためのスイッチ 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 20 10 100 { % 20から100まで波の高さを10づつ増やして{ }内を繰り返す /b exch def % 制御変数を波の高さbに入れる -360 1 360 { % -360から360まで1づつ増やして{ }内を繰り返す /th exch def % 制御変数をth(角度)に入れる /x a th mul def % a×th 波の長さを変化させる /y b th sin mul def % b×sin(th) 波の高さを変化させる % swが0の時始点をさもなくば 線を引く sw 0 eq { x y moveto /sw 1 def }{ x y lineto } ifelse } for /sw 0 def % swをリセットする } for stroke % 線を描画する


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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

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