So-net無料ブログ作成
検索選択
前の10件 | -

栗山川のあじさい遊歩道 [Photo]

2017年6月24日

多古町のあじさい祭りはすでに終わっていますが、1万株あるという紫陽花を見て見たかったので、あじさい遊歩道へ行って来ました。
成田空港第2ターミナルビルからシャトルバスに乗り、25〜30分ほどで道の駅多古へ。
多古大橋からあじさい橋間の川沿いを往復しました。
紫陽花は葉っぱが汚いのと蜘蛛の巣があったりで、残念ですがあまりいい写真は撮れませんでした。

あじさい遊歩道

紫陽花08.jpg

左に見える建物が道の駅多古あじさい館です。こちらで昼食のおこわなどを買いました。

紫陽花07.jpg

紫陽花06.jpg

紫陽花05.jpg

紫陽花04.jpg

紫陽花03.jpg

紫陽花02.jpg

紫陽花01.jpg

紫陽花09.jpg
タグ:紫陽花
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

目次 [PostScript]

PostScript手書き講座です。簡単な図形から始めて徐々に複雑な図形を制作していきます。
最初から順を追って、読んで実践することをお勧めします。

今週もPostScript BASICと題して、グラデーション、パターンや座標変換などについて紹介していきます。本日はDSCとEPSについて。

title.png
〔 〕内はオペレータ


PostScriptを始めよう



直線を描く



円を描く



直線を描く PART2



三角形・多角形を描く



点を打つ



円を描く PART2



パターンを描いてみよう



曲線を描いてみよう



具象的な曲線を描いてみよう



家紋を描いてみよう



PostScript BASIC



PostScriptギャラリー



参考





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

DSCとEPSについて [PostScript]

PS BASIC


eps.png
PostScriptはプログラムの全体的な構造を規定していません。
DSC(Document Structuring Conventions/文書構造規則)は文書交換を容易にするために推奨されています。
つまりアプリに読み込まれた時やプリント出力を望ましい結果にするための規則です。
必須のコメントを除いては、この講座では必要のないものもありますが、知識としてご紹介します。

こちらを参考にいたしました。
PostScript Technology Center
PostScript Language Document Structuring Conventions (DSC) Specification Version 3.0 #5001
Encapsulated PostScript (EPS) File Format Specification Version 3.0 #5002

PostScriptドキュメントの構造は大きく分けてプロローグ(Prolog)とスクリプト(Script)に分けられます。
プロローグにはヘッダーとプロシージャ定義等が含まれます。
ヘッダー部分はDSCコメントのみで構成されます。
スクリプトにはドキュメント設定、ページ設定、ドキュメントトレーラーからなります。トレーラーは後処理やクリーンアップを行います。

EPSはこのDSCに基づいたフォーマットです。


DSC.png

コメントには引数ありのものとなしのものがあります。
(引数なしの例)%%EndComments
引数ありのものはコメントのキーワードの最後にコロンがありスペース文字1個空けて引数が続きます。
(引数ありの例)%%BoundingBox: 0 0 240 240
コメントは1行255文字以内です。
EPSファイルとして必要なものは次のDSCヘッダコメントのみです。
その他のタイトルや作成日、著作者・著作権等は入れておいた方がいいかと思います。
プロシージャとメインプログラムを分けたい場合は%%BeginProlog %%EndPrologを使います。

必須のDSCヘッダコメント

%!PS - Adobe-3.0 EPSF-3.0
%%BoundingBox:llx lly urx ury

%!PS - Adobe-3.0は PostScript言語のページ記述がDSCバージョン3.0に完全に準拠していることを示します。
EPSF-3.0はEPSF形式のバージョン3.0に準拠していることを示します。
%%BoundingBox:llx lly urx uryは図形を囲む境界ボックスで左下(llx、lly)および右上(urx、ury)の座標を指定します。これは整数のポイントで指定します。

推奨のDSCヘッダコメント

%%Title: 文字列
%%Creator: 文字列
%%CreationDate: 文字列

%%Title:にはドキュメントのタイトルを入れます。
%%Creator:にはドキュメントの作成者やドキュメントを作成したアプリ名などを入れます。
%%CreationDate: にはドキュメントが作成された日付を入れます。フォーマットはありませんので好きなように入れてください。
(例)%%CreationDate: 2017/6/21 or 2017年12月12日 or 20171015 等

その他

%%Copyright: 文字列

%%Copyright:は著作権情報を入れます。

%%EndComments

ヘッダーコメントの終わりを示します。

%%BeginProlog
%%EndProlog

この間にプロシージャ等の定義を含めます。
プロシージャがない場合でも%%EndPrologコメントを含めておけばドキュメント全体がスクリプトになります。

%%BeginSetup
%%EndSetup

この間にグラフィック状態の設定などを入れます。

%%EOF はドキュメントの最後を示します。


【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:家紋を描く(2278待チ合イ四ツ七宝) %%Creator: Toyokazu Nishi %%CreationDate: 2017/05/09 %%Copyright: 2017(c) Toyokazu Nishi %%EndComments %%BeginProlog /shippo { gsave 0 30 translate newpath 0 0 30 360 0 arcn clip newpath -30 30 30 0 360 arc 60 30 moveto 30 30 30 0 360 arc 0 -30 moveto -30 -30 30 0 360 arc 60 -30 moveto 30 -30 30 0 360 ar wh grestore } def 1.8 dup scale %%EndProlog /wh { 1 setgray fill } def 0 setgray 0 0 240 240 rectfill 120 120 translate 4 { shippo 90 rotate } repeat %%EOF

EPSフォーマットには制限があり、使ってはいけないオペレータがあります。showpage、copypage、clear、cleardictstack、initclip、quitなどです。EPSはもともと他のアプリにインポートするためのフォーマットなので、複数のEPSファイルにshowpageがあると、グラフィックス状態を初期化してしまうので不具合が起こる可能性があります。

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

グローバル変数とローカル変数について [PostScript]

PS BASIC


epitrocoid_00029.png
PostScriptではローカル変数という明確なものはありませんが、辞書機能を利用して変数の有効範囲をシミュレートすることは可能です。
辞書とはキーと値をペアにしたデータの入れ物です。
PostScriptでは
●ユーザー辞書は読み書き可能なローカル辞書で辞書スタックの一番上にあり、カレント辞書となります。
●グローバル辞書は書き込み可能なグローバルな辞書
●システム辞書は読み取り専用のグローバルな辞書でオペレータ名とその値(動作)や定数が格納されています。
この講座ではほとんどグローバル変数しか使用していません。それは短いプログラムなので、ローカル変数を使う必要性を感じていなかったからです。
正しく動作するプログラムを組む時には変数の管理が必要ですので、ローカル変数の指定方法をご紹介します。

(1)辞書に入れる要素数を指定して辞書を作成します。
   例(/xxx 1 dict def)or( 3 dict )
(2)辞書を辞書スタックにプッシュします。(begin)
(3)要素を要素数分、定義します。例(/yy 100 def)
(4)辞書をポップします。(end)
以上で辞書をローカル変数として使用することができます。
要素数は指定した値より多くなっても問題ありません。
言語レベル2以上では要素数を初期値と解釈して動的に拡張してくれます。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:グローバル変数とローカル変数 %上記イメージとコードは関係ありません。 /test01 0 def % test01に0を入れる(グローバル変数) /testdict 1 dict def % 要素数1のtestdictという名前の辞書を作成 testdict begin % testdictを辞書スタックにプッシュ /test01 100 def % test01に100を入れる(ローカル変数) test01 == % test01を標準出力 結果:100 end %カレント辞書(testdict)をポップする test01 == % test01を標準出力 結果:0 Distillefで開くとジョブログ画面に標準出力の結果が表示されます。 distiller.png またはMacのプレビュー.appで開くとエラーとなりますが、コンソールで標準出力の結果を 見ることができます。 consol.png プロシージャ内で名前のない辞書を作成。 呼び出される毎にメモリを消費するが、変数が毎回初期化されるということと、 名前がないので隠蔽できるメリットがある。 %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:グローバル変数とローカル変数 /test01 0 def % test01に0を入れる(グローバル変数) /test02 2 def % test02に2を入れる(グローバル変数) /testproc { 2 dict begin % 要素数2の辞書を辞書スタックにプッシュ /test01 100 def % test01に100を入れる(ローカル変数) /test02 50 def % test02に50を入れる(ローカル変数) test01 == % test01を標準出力 test02 == % test02を標準出力 end %カレント辞書(testdict)をポップする } def test01 == % test01を標準出力 結果:0 /test01 test02 3 add def % test02に3を足したものをtest01に入れる test01 == % test01を標準出力 結果:5 test02 == % test01を標準出力 結果:2 testproc % 標準出力 結果:100 50

【オペレータの説明】
/キー 値 def
キーと値のペアを辞書に登録します。これは他のプログラムの変数のように使用できます。 /キー { 処理 } def のようにすればプロシージャとなります。プロシージャとは複数の処理をまとめたものです。
整数 dict
整数個(0以上)の要素を持つ空の辞書を作成してオペランドスタックに返す。
(例)/testdict 2 dict def
名前のない辞書を作成することも可能
(例)1 dict begin
辞書 begin
辞書を辞書スタックにプッシュし、カレント辞書に設定する。
(例)testdict begin
end
カレント辞書を辞書スタックからポップし、その下の辞書をカレント辞書に設定する。
/キー load
辞書スタックでキーを検索し、対応する値を返す。
辞書 /キー get
キーに対応する辞書の値を返す。

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

Fontについて [PostScript]

Fontについて


Font永00.png
PostScriptではフォントはフォント辞書のことです。 フォントのグリフ(字形)を使って文字を描画します。 フォントと書体が混同されてしまっていますのでここで簡単な定義をしておきます。
・字体(type):文字の骨組み
・字形(gryph):図形として表現したもの
・書体(type face):一貫したデザインで形成された字形の集合体
・フォント(font):同じサイズで、書体デザインの同じ活字の一揃い
・文字:抽象的なシンボル
・テキスト:文章等のひとまとまり 文字列

何故こんな間違いが普及したのかというと、恐らくパソコンのFontsフォルダに収められていたからフォントと呼ぶようになったのかと思います。

モリサワ フォント用語集 字体・字形・書体

【サンプルコード】
Font01.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:書体の指定の仕方 0 setgray 0 0 240 240 rectstroke % 黒背景 120 120 translate % 座標の原点を中央に移動 /Helvetica findfont % 使用するフォントの選択 32 scalefont setfont % フォントを32倍に拡大し、カレントフォントに設定する 0 0 moveto % 描画する位置(0,0)を指定 (Sample) show % 文字列Sampleを描画する
文字列をセンター合わせにします。 Font02-1.png % 背景、座標設定等は略しています /Helvetica findfont % 使用するフォントの選択 32 scalefont setfont % フォントを32倍に拡大し、カレントフォントに設定する (Sample) stringwidth % テキストの横幅を求め、移動する距離を返す。 Wx Wy % スタック内のWyとWxを入れ替えて距離Wxを-2で割ってマイナス側に始点を移動 exch -2 div 0 moveto (Sample) show % 文字列Sampleを描画する
改行します。 Font02-2.png /center_show { % センター合わせのプロシージャ % 文字列を複製し(dup)文字列の幅を得て(stringwidth)、辞書を削除し(pop) % -2で割る( -2 div)→x方向の移動量 y座標の移動量(0) 移動し(rmoveto)文字列を描画(show) dup stringwidth pop -2 div 0 rmoveto show } def % 改行プロシージャ 0(x座標) 現在の座標を得る(currentpoint)→20.0 0.0を入れ替え(exch)→ % 0.0 20.0、0.0を削除(pop)→20.0(y座標) 38を引く(38 sub) 始点の移動(moveto) /newline { 0 currentpoint exch pop 38 sub moveto } def % 背景、座標設定等は略しています 0 20 moveto /Helvetica 32 selectfont (Sample) center_show newline % 文字列Sampleを描画し改行する (PostScript) center_show
文字間の空きを設定します。 Font02-3.png /text (Sample) def % 文字列の定義 /aki 20 def % 文字間の空きの定義 /center_show { % センター合わせのプロシージャ text stringwidth pop -2 div 0 rmoveto ashow % 空きを入れた分センター合わせが狂ってくるのでその補正プロシージャ /aki_hosei { text length 1 sub aki mul -2 div } def % 背景、座標設定等は略しています aki_hosei 0 moveto%始点を移動 /Helvetica 32 selectfont aki 0 text center_show % 文字列Sampleを 文字間を開けて描画する
文字列を右合わせにします。 Font03-3.png /right_show { % 左合わせのプロシージャ dup stringwidth pop neg 0 rmoveto show } def /newline { 50 currentpoint exch pop 38 sub moveto } def % 背景、座標設定等は略しています 50 0 moveto /Helvetica 32 selectfont (Sample) right_show newline (PostScript) right_show
日本語を表示します。MacのOsakaは特別な設定は必要ありません。 ファイルはShift_JISで保存します。他のフォントは文字化けします。 Font04.png /center_show { dup stringwidth pop -2 div 0 rmoveto show } def % 背景、座標設定等は略しています 0 0 moveto /Osaka 32 selectfont (サンプル) center_show
ヒラギノ角ゴ Std W6を指定します。プレビュー.appやIllustrator、PhotoShopではエラーで 変換できませんが、Distillerでは変換できました。 CIDフォントに関してはこちらのサイトを参考にいたしました。 Tips on PostScript hiragino.png /center_show { dup stringwidth pop -2 div 0 rmoveto show } def % CIDフォントの設定 /HiraKakuStd-W6-RKSJ-H /RKSJ-H [/HiraKakuStd-W6] composefont /HiraKakuStd-W6-RKSJ-H 48 selectfont % 背景、座標設定等は略しています 0 0 moveto (サンプル) center_show
ヒラギノ明朝 Std W6を指定し縦書きで表示します。RKSJ-HのHをVに変えます。 hiraginoV.png /HiraMinStd-W6-RKSJ-V /RKSJ-V [/HiraMinStd-W6] composefont pop /HiraMinStd-W6-RKSJ-V 32 selectfont % 背景、座標設定等は略しています 0 64 moveto (サンプル) show

【オペレータの説明】

キー findfont
キー名のフォント辞書を得て、オペランドスタックにpushする。
(例)/Times-Roman findfont
フォント 拡大・縮小率 scalefont
フォントを拡大・縮小する。フォントの標準サイズは高さが1 単位。
(例)/Times-Roman 12 scalefont
フォント setfont
フォントをカレントフォントに設定する。
(例)/Times-Roman setfont
(文字列) show
カレントフォントで文字列を描画する。
(例)(Sample) show
Ax Ay (文字列) ashow
描画するグリフの幅を一括して調整する。
(例)10 0(Sample) ashow
キー CMap ファイル CIDFont composefont
CMapファイル、CIDFontを参照し、CIDフォント辞書を作成。definefontを実行しフォント辞書にキーの名前を付けてFont リソースカテゴリに登録する。
※CIDフォントとは日本語や中国語、朝鮮語のような膨大な文字セットを持つ言語を扱うためのフォーマット。
CIDフォント
キー 拡大率 selectfont
キー名のフォント辞書を得て拡大・縮小し、カレントフォントに設定する。
従来の指定の仕方より短くてすむ。
/Helvetica findfont 12 scalefont setfont

/Helvetica 12 selectfont

文字列 stringwidth
文字列のグリフ幅の合計値を求め、カレントポイントの移動距離(Wx、Wy)を返す
(例)
/HiraMinStd-W6-RKSJ-H /RKSJ-H [/HiraMinStd-W6] composefont
/HiraMinStd-W6-RKSJ-H 12 selectfont
(サンプル) stringwidth pstack
結果:0.0 72.0044 -dict-

結果から分かるようにスタックの先頭に辞書があるので、stringwidthを使う場合は辞書をpopすること。
currentpoint
カレントポイントの座標値(x、y)を返す。
pstack
オペランドスタック上のオブジェクトを標準出力(Distiller等のジョブログ画面)に表示する。 スタックの内容は変更しないのでバグ取りに利用する。
==
オペランドスタック上のオブジェクトをpopしテキストに変換して標準出力に表示する。 主にバグ取りに使用する (例)x ==
文字列 length
文字列の文字数を返す。
lengthはポリモーフィックなオペレータの一つで、型が異なるオペレータ、例えば配列、辞書などにも型に応じて適用されます。配列の場合は配列の要素数を返します。
ポリモーフィックなオペレータは他にはget、put、copyなどがあります。

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

ベジエ曲線について [PostScript]

PS BASIC

3次ベジエ曲線は始点、始点の制御点、終点の制御点、終点の4つの点で定義されます。
Adobe Illustratorなら制御点がビジュアルに操作できるので簡単ですが、手書きプログラムでは制御点をどこに置けば、求める曲線が得られるのかは難しいのでトライアンドエラーで置いていくしかありません。

【サンプルコード】
ベジエ01.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:ベジエ曲線 % 参考の赤い線・文字等は省略 /a { -100 0 } def % 開始点 /b { -100 100 } def % 制御点 /c { 100 100 } def % 制御点 /d { 100 0 } def % 終了点 /DeviceRGB setcolorspace % 色空間設定 0 0 0 setcolor % 黒 0 0 240 240 rectstroke % 黒枠で囲む 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 2 setlinewidth % 線幅2ポイント a moveto % 始点をaに置く b c d curveto stroke % ベジエ曲線を描く
% ベジエ曲線2 /a { -100 0 } def % 開始点 (x0,y0) /b {0 30 100 } def % 制御点 (x1,y1) /c { 80 80 } def % 制御点 (x2,y2) /d { 100 0 } def % 終了点 (x2,y2) ベジエ02.png
% ベジエ曲線3 /a { -100 0 } def % 開始点 (x0,y0) /b {0 30 100 } def % 制御点 (x1,y1) /c { 80 80 } def % 制御点 (x2,y2) /d { 100 0 } def % 終了点 (x2,y2) ベジエ03.png

% ベジエ曲線4 /a { -50 0 } def % 開始点 /b { 70 100 } def % 制御点 /c { -70 100 } def % 制御点 /d { 50 0 } def % 終了点 ベジエ04.png

Adobe Illustratorの円もベジエ曲線の近似円です。 Illustratorで制御点を測ったら0.5525あたりまでは分かったのですが、正確ではないため 円の制御点の近似値については下記のサイトを参考にしました。 A Primer on Bézier Curves https://pomax.github.io/bezierinfo/ja-JP/ ベジエ05.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:ベジエ曲線で円を描く /s 0.55228 def % 円の制御点の近似値 /r 100 def % 円の半径 /ctp { r s mul } def % 制御点の長さ 半径× 近似点値 /a { r neg 0 } def % 開始点 /b { r neg ctp} def % 制御点 /c { ctp neg r } def % 制御点 /d { 0 r } def % 終了点 /e { ctp r } def /f { r ctp } def /g { r 0 } def /h { r ctp neg } def /i { ctp r neg } def /j { 0 r neg } def /k { ctp neg r neg } def /l { r neg ctp neg } def /DeviceRGB setcolorspace % 色空間設定 0 0 0 setcolor % 黒 0 0 240 240 rectstroke % 黒枠で囲む 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 2 setlinewidth 線幅2ポイント a moveto % 始点をaに置く b c d curveto % 左上の円弧(1/4円) e f g curveto % 右上の円弧 h i j curveto % 右下の円弧 k l a curveto % 左下の円弧 closepath% 線を繋ぐ stroke % ベジエ曲線を描く




【オペレータの説明】
x1 y1 x2 y2 x3 y3 curveto
絶対座標でベジエ3次曲線を描く。 四角形の線分の長さ(サンプルの赤線)は各端点におけるパスのベロシティを表しています。
ベロシティとは方向性を持った強弱の度合いです。
dx1 dy1 dx2 dy2 dx3 dy3 rcurveto
相対座標でベジエ3次曲線を描く。relative curvetoの略。

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

クリップについて [PostScript]

PS BASIC


クリップとは図形を任意の領域で切り抜くことです。
クリップにもいろいろなタイプがありますのでサンプルを作成しました。
少し不具合があり、「刈り込み」では、本来出ないはずの線が出てしまっています。図形とクリップ領域がピッタリ合っているためにそうなったのではないかと思います。いろいろ試しましたが消すことができませんでした。

【サンプルコード】
クリップなしでは、最後に描いた円が上に表示され下の円は一部隠れています。 クリップ00なし.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:クリップ % クリップ (なし) % カラー定義 /red { 1 0 0 setrgbcolor } def /bk { 0 0 0 setrgbcolor } def /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 0 360 arc } def % 右側の円の定義 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 bk en_right % 右側の円 fill % 塗りつぶし red en_left % 左側の円 fill
クリップ01中窓.png % クリップ (中窓) % Adobe Illustratorで複合パスと言われているものです % ※コードを短くするためカラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 bk en_right % 右側の円 red en_left % 左側の円 (色は最新設定の色になる) fill % 塗りつぶし
クリップ02刈り込み.png % クリップ (右刈り込み) 注意 薄っすらと線が見える % ※カラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 red en_right clip % 右側の円でクリップする bk en_left % 左側の円 fill % 塗りつぶし
クリップ03刈り込み.png % クリップ (左刈り込み) 注意 薄っすらと線が見える % ※カラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 bk en_left clip % 左側の円でクリップする red en_right % 右側の円 fill % 塗りつぶし
クリップ04切抜き.png % クリップ (切り抜き) % ※カラー設定は省略 /en_left { -30 0 60 0 360 arc } def % 左側の円の定義 /en_right { 30 0 60 360 0 arcn } def % 右側の円の定義(時計回り) 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 red en_right clip % 右側の円でクリップする newpath % 重要これがないと切り抜きにはならない bk en_left % 左側の円 fill % 塗りつぶし
クリップ05.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:四角形クリップ % 四角形クリップオペレータ /sw 1 def % 色変更スイッチ /swc { sw 1 eq { red } { bk } ifelse } def % swが1なら赤、そうでないなら黒にする /red { 1 0 0 setrgbcolor } def % カラー定義 /bk { 0 0 0 setrgbcolor } def % カラー定義 0 0 240 240 rectstroke % 画面囲み 120 120 translate % 図形を中央に移動 newpath % パスの初期化 -80 -80 160 160 rectclipt % 四角形クリップ 120 -5 0 { % ストライプの円 /r exch def % 制御変数をr(半径)に入れる swc 0 0 r 0 360 arc % 色設定 円を引く fill /sw sw neg def % 色変更 } for
クリップ06.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:四角形クリップ % 四角形クリップ(配列使用) /sw 1 def /swc { sw 1 eq { red } { bk } ifelse } def /red { 1 0 0 setrgbcolor } def /bk { 0 0 0 setrgbcolor } def 0 0 240 240 rectstroke 120 120 translate newpath % 複数の四角形クリップを配列に設定する [ -100 50 50 50 -25 50 70 50 75 50 50 50 -50 0 50 30 50 0 50 10 -100 -50 50 50 -25 -50 30 30 10 -100 100 50 ] rectclip 120 -5 0 { /r exch def swc 0 0 r 0 360 arc fill /sw sw neg def } for



【オペレータの説明】
x y 幅 高さ rectclip
四角形のクリッピングパスを作成する
[ x1 y1 幅1 高さ1~xn yn 幅n 高さn ] rectclip
複数の四角形のクリッピングパスを作成する

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

ラベンダーまつり2017 [Photo]

2017年6月18日

今日はあいにくの曇り空ですが、先崎(まっさき)の佐倉ラベンダーランドへ行ってきました。

公式サイト:佐倉ラベンダーランド

ラベンダーランド.jpg

濃紫早咲き00.jpg

濃紫(のうし)早咲

濃紫早咲き01.jpg

濃紫早咲

濃紫早咲き02.jpg

濃紫早咲

濃紫早咲き03.jpg

濃紫早咲

grosso.jpg

グロッソ

オカムラサキ.jpg

オカムラサキ

オカムラサキ2.jpg

オカムラサキ

露店.jpg

露店が出るのは今日までですが、いつものラベンダーソフトをいただきました。

太巻き寿司.jpg

帰りにマルシェかしまに寄って、千葉の郷土料理、太巻き寿司を美味しくいただきました。

マルシェかしま公式サイト
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

平成29年度水郷佐原あやめ祭り [Photo]

2017年6月17日

水郷佐原水生植物園がリニューアルして今年4月末に水郷佐原あやめパークとしてオープンしました。佐原駅からシャトルバスで25分ほど。園内では結婚式も執り行われていました。
風が強くて、花びらがめくれたりとあまりいいコンディションではありませんでしたが、たくさんの人で賑わっていました。

アレンジ.jpg

公式サイト:水郷佐原あやめパーク

あやめパーク20170617.jpg

秋の錦.jpg

熊本系 秋の錦

青葉川.jpg

江戸系 青葉川

サッパ船.jpg

サッパ舟

紬娘.jpg

長井古種 紬娘

天女の冠.jpg

江戸系 天女の冠

姫.jpg



帰りのバスで忠敬橋で降り、佐原の町並みを散策。
レンズ変えるの面倒なので、そのままにしていたのですが200mm近い望遠なので、建物・風景はなかなか撮るのが難しいです。それでこんな物を撮りました。

忠敬橋.jpg

忠敬橋の中象限儀オブジェ

post01.jpg

古い郵便箱が目に付いたので、これはいけると思って帰ろうとしたところを引き返して撮りました。

post02.jpg

何だか人の顔に見える郵便箱

post04.jpg

このこも顔に見える

post03.jpg

post05.jpg

佐原には赤ポストがいっぱい。

post06.jpg

post07.jpg

post08.jpg

post09.jpg

post10.jpg


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

座標変換(菱形)について [PostScript]

PS BASIC

菱形はせん断と回転の組み合わせでできています。

グレー部分が元の図形で、変換後は赤で示しています。
作例のconcatの配列ではスペースの関係でtx,ty 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 % グラフィックス状態の復元
% 菱形 [30 cos 30 sin 30 cos neg 30 sin] ctm_菱形30-00.png
% 時計回りに90度回転 [30 cos neg 30 sin 30 cos neg 30 sin neg] ctm_菱形30-90.png

% 時計回りに180度回転 [30 cos neg 30 sin neg 30 cos 30 sin neg] ctm_菱形30-180.png
% 時計回りに270度回転 [30 cos 30 sin neg 30 cos 30 sin] ctm_菱形30-270.png

% 縦長の菱形 [60 cos 60 sin 60 cos neg 60 sin] ctm_菱形60-00.png
% 時計回りに90度回転 [60 cos neg 60 sin 60 cos neg 60 sin neg] ctm_菱形60-90.png

% 時計回りに180度回転 [60 cos neg 60 sin neg 60 cos 60 sin neg] ctm_菱形60-180.png
% 時計回りに180度回転 [ 60 cos 60 sin neg 60 cos 60 sin] ctm_菱形60-270.png

% 反転・菱形 [ 30 cos 30 sin neg 30 cos neg 30 sin neg] ctm_反転菱形30-0 .png
% 反転・90度回転 [30 cos 30 sin 30 cos 30 sin neg] ctm_反転菱形30-90.png

% 反転・180度回転 [30 cos neg 30 sin 30 cos 30 sin] ctm_反転菱形30-180.png
% 反転・270度回転 [30 cos neg 30 sin neg 30 cos neg 30 sin] ctm_反転菱形30-270.png





タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート
前の10件 | -