B-Spline 近似

2次元の点列をB-Spline曲線で近似する方法の紹介。
一般的に「B-Spline補間」などをキーワードとして出てくる話は、関数f(x)のグラフの補間だったりするけれど、そうではなくて下の図のような2次元の自由曲線の表現の話。

例えば、マウスドラッグで描いた凸凹な曲線を滑らかなB-Spline曲線で近似できる。
具体的なアルゴリズムは次の通り。

NはB-Spline基底関数。
曲線の端点が入力点列の端点と一致するようにするには、ノットベクトルの両端を(次数+1)個だけ重ねる。それ以外のノット間隔は一様にしてもいいし、点間距離に比例したものにしてもよい。


詳細な解説はこちら。
Curve Global Approximation (C.-K. Shene)
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/CURVE-APP-global.html


こちらの講義資料のページには、計算幾何に関する貴重な資料が多くある。
CS3621 Introduction to Computing with Geometry Notes
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/

次のスライドはベジェ曲線、Bスプライン、NURBS曲線に関する説明がわかりやすい。
SFC Design theory 2012 6/20(村松充)
http://www.slideshare.net/mitsurumuramatsu/sfc-design-theory-2012-613-13392783


曲線の事典 ―性質・歴史・作図法―

曲線の事典 ―性質・歴史・作図法―

改訂二版〈Illustratorで学ぶ〉「ベジェ曲線」習熟ドリル

改訂二版〈Illustratorで学ぶ〉「ベジェ曲線」習熟ドリル