Catmull-Romスプライン
プログラムメモ | 2013/08/14 Wed 07:37
| Catmull-Romスプライン
Edwin CatmullとRaphael Romにより開発された曲線補間ですが、
Edwin Catmullはピクサー・アニメーション・スタジオの現社長だそうです。
私がCatmullのスプラインを最初に調べたのは、8年も前になりますが、
そのころは記事や論文がほとんどなくて苦労した記憶があります。
3次のB-Spline(Cardinal)に比べてやや鋭角な印象があります。
その分、Createrの意思が反映できます。
正確なデザインは、Bezierを使った方が良いですが、
ラフなデザインや、流線型に限れば簡単で重宝します。
今回も簡単にjavascriptでプログラムしてみます。
Opener(開曲線)なカーブは、検索すればいくらでもありますので、
Closed(閉曲線)なカーブを描いてみます。
とは言っても、行列式は決まっているので、
媒介変数を使って2価関数を許し、始点・終点の節点を調節するだけです。
Catmull-Splineでは4つの節点から、3次の補間式を作るので、
始点を、P[n-1],P[0],P[1],P[2]から作り、
終点は、P[n-2],P[n-1],P[0],P[1]から作ります。
関数catmullCircuitに、節点のX,Y座標列を与えると、
節点間の20個の補間座標を返します。
実行サンプルはこちら
実行サンプルはこちら
IE9以降/Chrome/Safari/FF/Androidで、確認しています。
Tags: プログラムメモ
Edwin CatmullとRaphael Romにより開発された曲線補間ですが、
Edwin Catmullはピクサー・アニメーション・スタジオの現社長だそうです。
私がCatmullのスプラインを最初に調べたのは、8年も前になりますが、
そのころは記事や論文がほとんどなくて苦労した記憶があります。
3次のB-Spline(Cardinal)に比べてやや鋭角な印象があります。
その分、Createrの意思が反映できます。
正確なデザインは、Bezierを使った方が良いですが、
ラフなデザインや、流線型に限れば簡単で重宝します。
今回も簡単にjavascriptでプログラムしてみます。
Opener(開曲線)なカーブは、検索すればいくらでもありますので、
Closed(閉曲線)なカーブを描いてみます。
とは言っても、行列式は決まっているので、
媒介変数を使って2価関数を許し、始点・終点の節点を調節するだけです。
Catmull-Splineでは4つの節点から、3次の補間式を作るので、
始点を、P[n-1],P[0],P[1],P[2]から作り、
終点は、P[n-2],P[n-1],P[0],P[1]から作ります。
関数catmullCircuitに、節点のX,Y座標列を与えると、
節点間の20個の補間座標を返します。
実行サンプルはこちら
CatMull-Spline Circuit
実行サンプルはこちら
IE9以降/Chrome/Safari/FF/Androidで、確認しています。
Tags: プログラムメモ
author : HUNDREDSOFT | - | -