Illustratorのアウトプット値でカクカク問題(PostScriptの平滑度問題)(2)
スポンサードリンク
前回記事、平滑度を適当に設定すると、Illustrator はとんでもない平滑度の eps を吐き出すよ、アドビなにやってんの! ていう話の続きです。
Illustrator 8 の epsなんかでは、
800 Ar
というところで、オブジェクトのアウトプットの値を設定しています。それで、実際のカクカク具合は、setflat っていうオペレータでデバイスに指示するのだけれども、こいつが受け付けるのは、平滑度 0.2~100(Photoshopのクリッピングパスでおなじみ)だったりしますので、変換が必要です。
(僕は 生PSについては、setflat 位しか語れません。予防線、予防線……)
/Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def
- exch
- スタックの上から2つを入れ替える
- dup
- スタックの一番上を複製して一番上に乗せる
- mul
- スタックの上から2つで掛け算
- add
- スタックの上から2つで
掛け算足し算 adddiv- スタックの上から2つで割り算
- sqrt
- 言わずと知れた平方根
Ar
のオペランドを f として、( 72 / f , 0 ) をデバイスの距離ベクトル ( x' , y' ) に変換して、√( x' * x' + y' * y' ) しているのですよね。あと結果が 1 未満になったら、先ほどの結果を捨てて 1 にしてしまうという条件が付いているのですね。exch
でスタック交換したりするのが、あまりにも技巧的で計算機実習のときにハンドアセンブルする課題面倒なんで MSX でアセンブラかけて提出したので課題自体は早く終わったが A レジスタクリアに XOR A
を使ってしまい意味不明ということで減点食らったのもいい思い出だ。日高徹のバカー(課題以外では役に立った。テープリードBIOSをフックしてディスク版ソフトにしたりとか)。
Postscript を吐き出すアプリをかける人って結構いたりするのですよね(僕の近くにもいらっしゃいます)。確かに自動組版での自由度は一番デカいけれども……
(2004.4.30訂正)
<del>LISP 苦手なんで</del><ins>逆ポーランド表記</ins>
<del> LISP 系にはまる人はすごくはまるんだろうなと思うとともに</del>
計算機言語の講義サボってたの丸分かり。PostscriptはForth系の言語で、逆ポーランド表記が特徴なんですよね。LISPはどっちかというと関数型じゃん。許して、偉い人。
(2004.8.23訂正)
<del>
<dt>add</dt><dd>スタックの上から2つで掛け算</dd>
<dt>add</dt><dd>スタックの上から2つで割り算</dd></del>
<ins>
<dt>add</dt><dd>スタックの上から2つで足し算</dd>
<dt>div</dt><dd>スタックの上から2つで割り算</dd>
</ins>
投稿 大野 義貴 [Illustrator] | 固定リンク |
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/68
コメントする