太さの変わるBezier曲線の生成 - 追記 [考え中 - 太さの変わるBezier曲線]
全部出来上がってからではなくて、考える過程を残しているせいで、冗長でくどかったり、逆に舌足らずで説明不足だったりする。さらにとちゅうでノーテーションが違ってしまったりする。見てくださっている人には申し訳ないけど、しょうがない面もある。くどい部分は聞き流してもらうとして足りない部分は突っ込んでいただきたい。間違ってなければ補足するし、突っ込んでもらったおかげで間違いに気がつくこともある。
今回は、宿題の回答の中で質問をもらったのでそれに答える。
式-78と式-79の導出をする。3次のBezier曲線の一般式
をtに関して微分すると これをtに関して整理し直すと、めんどうだけと注意深く計算して となる。これの一方(xかyかいずれかの)が0のとき、すなわち
のどちらか一方を満たすとき(全体を3で割っておけばよかった)、曲線はその点で座標軸に平行になっているということになる。どちらもtに関して2次の式なので最大2つの0点がある可能性がある。座標軸に平行になっているということは平行な座標軸と垂直な方向に関して極値を取っていることになる。ただし、極値とはならない場合がある。
それは重根の場合で、この場合は一旦平行になるけどまた同じ方向にのびる場合。これは極値とはならない。
また、両方が同時に0になるところがあった場合、そこはdsが0(つまりtが大きくなっても曲線の長さが長くならない)の点となっている。これはある点で折り返すような場合に発生する。Bezier曲線としてはまれなケースだけどありえて、この場合極値となる。ところがこのとき一方が重根の場合は極値にはならない。それ以外では端点で発生する可能性がある。どんな場合にしてもレアケースで、高々2次の方程式なので全部の可能性を当たってもたかが知れているのであまり厳密な場合分けをする必要はない。
質問をもらって、ひょっとして計算間違いしてるか、と思ってひやひやしたけど、とりあえずあっていた。一安心。
あけましておめでとうございます。
このような記事まで書いていただいたのに、
永らくお礼も差し上げず、申し訳ありません。
そしてどうもありがとうございます。
趣味プログラマーなもので、
自分の開発しているプログラムが
お教えいただいたアルゴリズムの実装に取り組むどころか、
まだその下地プログラムの完成にまでいたらない段階です。
#ところで、お夕食に煮物などの
#火の通った野菜をお召し上がりになるようオススメいたします。
#
#先日、初めて「しもやけ」にかかり、水虫と勘違いして
#皮膚科に行ったのですが、
#生野菜ばかり食べていると
#血行が悪くなってこういった疾患に
#かかりやすくなるらしいです。
#
#さらには治療を怠ったがために、
#あかぎれを併発して
#骨さえも見えそうなほどに深くえぐれてしまいました(^^;A
by うたひこ (2009-01-05 21:47)
コメントありがとうございます。自分でも考えながらの中途半端なものをだらだらと書いているのでわかりやすくはないと思っています。自分で見直しても「なにこれ?」ということが少なくありません。「どうなっとんじゃい」という指摘をいただければ冷静に見直すきっかけにもなりますので今後ともよろしくお願いします。
煮物の件、女房にもよく指摘されます。骨が露出するのは困るので注意します。
by decafish (2009-01-06 23:27)