SSブログ

太さの変わるBezier曲線の生成 - その0 [考え中 - 太さの変わるBezier曲線]

ある人物にヒントを貰って考え始めたんだけど、なかなか面白そうな問題なので本腰を据えて考えることにした。Bezier曲線による線描画の問題。

仕事がくそ忙しくて、時間がないというのにこんなことで遊んでいる。女房の「さっさと寝んかい」という声が聞こえる。きょろきょろと辺りを見回す。空耳か...

はじめに

何がやりたいか

Bezier曲線は幅が一定の線を描くのに適している。一方、Bezier曲線で太さの変化する線は塗りつぶされた閉領域として生成しなければならない。

0925fig1.png

図-1に二通りのBezier曲線を示す。左上は太さの均一な曲線、右上は太さの変化する曲線だけど、曲線の線幅を両方とも1ptにして塗りつぶしなしにすると下の曲線になる。

つまり、左側は太さを持った曲線だが、右側は実は内部が塗りつぶされた閉じた領域で表現されている。Bezier曲線を使うpostscriptフォントは「一」も閉領域である。

最終的な目的はおいおい説明することにして当面なにをやりたいかというと、なるべく簡単な入力方法でこのような曲線を生成するCocoaアプリケーションを作りたい

マウスだけでは左の曲線しか生成できないが、タブレットを使えば筆圧に応じて太さの変化する曲線を入力できる可能性がある。Adobe Photoshopなどのアプリケーションで同様のことができるが、生成できるオブジェクトはビットマップ画像のみであり、解像度に依存しないBezier曲線は生成できない。

逆に例えばAbobe Illustratorを使えばBezier曲線を自由に簡単に描くことができる。しかしIllustratorでもこのようなBezier曲線を使った太さの変化する線を生成する簡単な方法はない(タブレットを持っていないのでIllustratorでほんとにできないのかどうか、実はよく知らないんだけど)。

なぜビットマップではないか

なぜビットマップでなくてBezierでやりたいか、というと理由はいくつかある。

  • ビットマップ用にはPhotoshopをはじめとして(使い勝手や値段はさておいて)多くのソフトが存在する
  • Bezier曲線であれば解像度に依存せずきれいな線が描ける
  • Bezier曲線をビットマップに変換するのは簡単だけど、その逆は難しい
  • ビットマップと違って数学的な問題としておもしろい
MacOS XではBezier曲線を描くにはNSBezierPathというクラスを使えばよく、ビットマップへの変換はNSImageを使って難しいことを考えずにできてしまう。ということでMacOS XだとBezier曲線の生成の問題に集中できる。

やりたいことはわかってもらえたでしょうか?
なんて、誰に向かって言うとるんじゃい。今日のところは女房が飛ばした生き霊の言葉に従って寝ることにしよう。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

献立09/25献立09/26 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。