SSブログ

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

Photoshopを使ってタブレットでブラシの線を描いたようなBezier曲線を生成するソフトを作りたいという話。前回ひとつの3次Bezier曲線を任意の点でふたつに分割することを考えた。次は楕円の幅の計算。 ペン先の形状として楕円を使うことにしたので、これによる線の太さを計算しておく。

楕円の扱い

最初の方で絵に書いたように、楕円の長短軸方向と線を引く方向とはたいてい一致しない。中途半端な方向を向いた楕円の、線を引く方向に沿った幅を計算する必要がある。

楕円はθを媒介変数として

1011eq37.png
と書ける。簡単。とりあえずここでは
1011eq38.png
としておく。つまりaの方向、すなわちx軸の方向が長軸になるような楕円だけを考える。この楕円をφだけ回転させるには
1011eq39.png
とすればよい。ここでR(φ)は回転のマトリクスである。座標を縦書きにするのが面倒なのでマトリクスを後からかけ算することにする(といってもここにしか出てこないけど)。これを展開すると
1011eq41.png
となるが、三角関数の加法定理を使ってひとつの三角関数で表すと
1011eq42.png
ここで
1011eq44.png
となるような、ψx、ψyである(LaTeXの\varphiに対応する文字ってどれ?)。sinとcosの2乗和が1になるのでψx、ψyは必ずある。

式-43からわかるようにこの回転した楕円を外接する長方形のそれぞれの辺の長さは

1011eq48.png
となる。

1011fig11.png

つまり、図-11のように線の向きを座標軸の方向にあわせたとき(線の方向が座標軸に重なるようにもう一度回転させたとき)Lx、あるいはLyがこの楕円による線の太さとなることがわかる。

これで中途半端な方向を向いた任意の楕円に外接する平行線の幅が求まった。これも単に平面幾何、というよりは三角関数の代数についての高校数学程度の簡単な問題。つぎは「なめらかな曲線」の問題に行こう。


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

nice! 0

コメント 1

takepon

なに!

太さが変わりますか。

変わります。

だえん。ううう。だえん。

マトリクス

ううう。マトリクスやて
by takepon (2008-10-30 13:42) 

コメントを書く

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

トラックバック 0

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