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

座標変換(拡大・縮小)について [PostScript]

PS BASIC

座標変換にはスケーリング(拡大・縮小)、シェア(せん断)、ローテイト(回転)、鏡像、トランスレート(移動)などがあります。

concat.png

concatオペレータは座標変換が一度に出来て便利なのですが、パラメータの組み合わせが良くわからなかったりします。そこで組み合わせのサンプルを作りました。
最初は拡大・縮小と鏡像です。

グレー部分が元の図形で、変換後は赤で示しています。

【サンプルコード】
ctm_ノーマル.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:座標変換(拡大・縮小・鏡像) 0 0 240 240 rectstroke % 黒背景 120 120 translate % 座標の原点を中央に移動 2 setlinewidth % 線幅2ポイント /box { % 変形前の図形 .5 setgray -50 -50 100 100 rectfill % グレー四角形 .7 setgray -50 30 20 20 rectfill % 左上のグレー四角形 0 0 50 0 360 arc stroke % 円 -40 -10 moveto % (-40,-10)に移動 /Helvetica findfont 24 scalefont setfont (Sample) show % テキスト表示 } def /cbox { % 変形後の図形(赤) 1 0 0 setrgbcolor -50 -50 100 100 rectstroke -50 30 20 20 rectfill 0 0 50 0 360 arc stroke -40 -10 moveto /Helvetica findfont 24 scalefont setfont (Sample) show } def newpath % パスの初期化 box % 変形前の図形 gsave % グラフィックス状態の保存 [ 1 0 0 1 0 0 ] concat % 座標変換(ノーマル状態) newpath cbox % 変形後の図形(赤) grestore % グラフィックス状態の復元
% x方向を0.5倍 [ .5 0 0 1 0 0 ] concat ctm_拡大x0.5倍.png
% y方向を0.5倍 [ 1 0 0 .5 0 0 ] concatt ctm_拡大y0.5倍.png

% x方向を2倍 [ 2 0 0 1 0 0 ] concat ctm_拡大x2倍.png
% y方向を2倍 [ 1 0 0 2 0 0 ] concat ctm_拡大y2倍.png

% x方向を1.5倍 y方向を2倍 [ 1.5 0 0 2 0 0 ] concat ctm_拡大x1.5y2倍.png
% x方向・y方向を2倍 [ 2 0 0 2 0 0 ] concat ctm_拡大xとy2倍.png

% 左右反転 [ -1 0 0 1 0 0 ] concat ctm_左右反転.png
% 天地反転 [ 1 0 0 -1 0 0 ] concat ctm_天地反転.png

% 天地左右反転(180度回転) [ -1 0 0 -1 0 0 ] concat ctm_天地左右反転.png



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

nice! 1

コメント 0

コメントを書く

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

トラックバック 0

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