あるPSのドローソフトのデータをAdobe IllustratorのEPSデータ
に変換するフィルターを作ろうとしているのですが,Illustratorでは
曲線はすべてベジェ曲線のデータとして扱っています。
そこで任意の円や二次曲線,自由曲線を描くときにベジェ曲線のみを
使って描くにはどうやって制御点を求めれば良いのか教えてもらえな
いでしょうか。
もし数学的に不可能ということであれば,それに代替する方法を教えて
もらえないでしょうか。
また、同等の事ができるプログラム等があれば教えて下さい。
宜しくお願いします。
----------------------------
============================
--ネクストソリューション株式会社 --
==企画開発部 TEL:0424-98-1811 FAX:0424-98-1500 ==
--松岡正明 --
== e-mail (office) :ma...@nextsolution.co.jp ==
-- (personal):be...@ask.or.jp --
============================
----------------------------
> そこで任意の円や二次曲線,自由曲線を描くときにベジェ曲線のみを
> 使って描くにはどうやって制御点を求めれば良いのか教えてもらえな
> いでしょうか。
結局のところ, Postscript では 3次のベジェ曲線(つまり, パラメトリックな
3次多項式で表せる曲線)しか使えませんので, それで表現できないものは近似
するしかありません。
(さらにいえば, 最終的には直線になっちゃうんですけどね。)
> もし数学的に不可能ということであれば,それに代替する方法を教えて
> もらえないでしょうか。
簡単にやるなら, 曲線を充分に小さく分割して直線で近似するというのはいか
がでしょう?
> また、同等の事ができるプログラム等があれば教えて下さい。
同等かどうかは知りませんが, PS file を edit しようとしたときに使えそう
なツールとしては,
ftp://toby.princeton.edu/pub/olszewsk/aimaker.shar とか
ftp://ftp.iij.ad.jp/X/contrib/applications/tgif/pstoedit/pstoedit.2.50.tar.gz
っていうのがあるようです。
(後者はたぶん Illustrator の形式では出力できないと思う。たぶん。)
ただ, 私は使ってないんで詳しいことは知らないんですけど。
--
[田中 哲][たなか あきら][Tanaka Akira]
> あるPSのドローソフトのデータをAdobe IllustratorのEPSデータ
> に変換するフィルターを作ろうとしているのですが,Illustratorでは
> 曲線はすべてベジェ曲線のデータとして扱っています。
> そこで任意の円や二次曲線,自由曲線を描くときにベジェ曲線のみを
> 使って描くにはどうやって制御点を求めれば良いのか教えてもらえな
> いでしょうか。
> もし数学的に不可能ということであれば,それに代替する方法を教えて
> もらえないでしょうか。
> また、同等の事ができるプログラム等があれば教えて下さい。
PostScript で曲線を描くオペレータは arc と curveto くらいですよね.
つまり任意の円弧を 3次Bezier曲線分で表せるかどうかというのが
当面の問題だと思うのですが,まあ「数学的解法」はいろいろ考えられると
思いますが,てっとり早く思い付く方法としては,
円弧の両端の位置と接線方向から,一つのベジエ曲線分の4つの制御点を
決めてしまえばいいんじゃないですかね.
p0 p1
*------*--------* px
|
|
|
* p2
|
|
|
* p3
p0,..,p3 が制御点で,p0-p1 は p0 での接線方向,p2-p3 は p3 での
接線方向です.p1, p2 の位置は自明じゃないので,p0-px, p3-px 間を
1:1-t に内分した点をそれぞれ p1, p2 とすることにして,t は適当に
決めるとか.近似精度が不満ならば,
円弧をさらに分割すれば上の方法でもそれなりに対応できると思います.
--
萬 壽 無 疆 永江 孝規 na...@an.ip.titech.ac.jp
http://karin.ip.titech.ac.jp/~nagae/
=============================
松岡正明
be...@ask.or.jp