Catmull-Romスプライン曲線

Catmull-Romスプライン（）は、カーディナルスプラインの特殊な場合のひとつ。「一様な」パラメータ間隔を前提とする。3次エルミートスプラインにおいて、接ベクトルとして

を選択し、3次エルミートスプラインの定義式

にあてはめることにより、以下のCatmull-Romスプラインの式が得られる。

この曲線は  Edwin Catmull と  にちなんで名付けられた。この手法の主な利点は、元の点セットに沿った点がスプライン曲線の制御点も構成することである。
曲線の両端に2つの追加点が必要である。
一様なCatmull-Romスプラインの実装では、ループと自己交差が発生する可能性がある。
chordal および centripetal Catmull-Rom スプラインN. Dyn, M. S. Floater, and K. Hormann. Four-point curve subdivision based on iterated chordal and centripetal parameterizations. Computer Aided Geometric Design, 26(3):279–286, 2009.実装はこの問題を解決するが、計算方法が若干異なるP. J. Barry and R. N. Goldman. A recursive evaluation algorithm for a class of Catmull-Rom splines. SIGGRAPH Computer Graphics, 22(4):199–204, 1988.。

コンピューターグラフィックスでは、キーフレーム間の滑らかな補間モーションを取得するために Catmull-Rom スプラインが頻繁に使用される。たとえば、離散キーフレームから生成されるカメラパスアニメーションのほとんどは、Catmull-Romスプラインを使用して処理される。これらは主に、計算が比較的容易であること、各キーフレームの位置が正確にヒットすることを保証すること、生成された曲線の接線が複数のセグメントにわたって連続していることを保証することから人気がある。

 定義（CatmullとRomによる） 
文献は複数の方式の補間曲線の比較である。
以下のブレンディング関数のグラフや実験結果が示されており、この内『例3』がCatmull-Romスプライン曲線であるRead the Docs - Uniform Catmull–Rom Splines。

  Interval Width  Differentiability  Type  Degree of Polynomial for Cardinal Function 例1  3  1  B-SPLINE  例2  4  2  BEZIER  例3  4  1  B-SPLINE  1 例4  6  2  B-SPLINE  2

定義式は、

である。
 は定義点（defining point）、 はブレンディング関数  を  の区間にシフトしたものである。
以下は左から、ブレンディング関数  とそのシフト 、曲線  の例である。

800px

ブレンディング関数は以下の基数関数（cardinal function）である。
総乗の表記は『、ただし  を除く』を表し、以下と等価である。

線形ラグランジュ補間を使用するので  であり、

になる。
 は2次一様B-スプラインの基底関数をシフトしてブレンディング関数化したものである。

以下は左から、2次一様B-スプラインのブレンディング関数と、シフト前の基底関数である。

480px

 の各項のグラフは以下の通り。
300px

この  を  にあてはめると

になり、 にシフトして  を求め、行列形式にまとめると、

となり、3次エルミートスプラインとしての定義式と一致する。

 性質 

 B-スプライン曲線との比較 
Catmull-Romスプライン曲線は定義点を通るinterpolationであるのに対し、B-スプライン曲線は制御点を通らないapproximationであるCatmull, Rom (1974), p.319。

以下左から、3次一様B-スプラインのブレンディング関数とシフト前の基底関数、曲線の例である。

800px

 連続性 
Catmull-Romスプライン曲線は定義および以下によりC1連続であり、C2連続ではない。

 自己交差の発生 
曲線の途中で、定義点の間隔の差が大きいと尖った形状（カスプ）や自己交差が発生する場合がある先頭や末尾の定義点は隣接の定義点と重なっていても問題ない。これは『余計な』定義点を隠すためのテクニックとして意図的に用いられる場合があり、冒頭の例もそのようにして作成されている。。

以下は自己交差の例である。

200px

 ベジェ曲線への変換 
サムネイル|代替文=ベジェ曲線への変換例（赤がベジェ曲線の制御点）|ベジェ曲線への変換例（赤がベジェ曲線の制御点）
3次ベジェ曲線の行列形式は

であることから、Catmull-Romスプライン曲線と等しくなる3次ベジェ曲線の制御点は

である。

 曲面（バイキュービック補間）への拡張 
2つのCatmull-Romスプラインの直交座標積を取ることで、点のグリッドを補間する2変量サーフェスを取得できるCatmull, Rom (1974), pp.322-323。

以下の式で表されるバイキュービックパッチとなる。

ここで

パッチは中央の4点を補間する。隣接パッチ間は1次導関数連続となる。

テンションパラメータの拡張
サムネイル|代替文=テンションパラメータのキーフレーム補間に対する視覚的作用を示した例|テンションパラメータのキーフレーム補間モーションに対する視覚的作用を示した例（白丸：キーフレーム、青：、緑：、赤：）

接ベクトルの係数  をテンションパラメータ  に置き換えた

をCatmull-Romスプラインとしている場合がある。

この場合の定義式は以下となる。

なお、 とKochanek–Bartelsスプラインのテンションパラメータ（ とする）の関係は

である。

サムネイル|代替文=ベジェ曲線への変換例|ベジェ曲線への変換例（）
また、等価な3次ベジェ曲線の制御点は

である。

 脚注 
 注釈 

 出典 

 参考文献 



 関連項目 
 3次エルミートスプライン
 Centripetal Catmull-Romスプライン
 バイキュービック補間
 ベジェ曲線
 スプライン曲線
 B-スプライン曲線
 Kochanek–Bartelsスプライン曲線

 外部リンク 
 Fussy - 曲線描画

Category:曲線
Category:数学に関する記事
Category:数学のエポニム
Category:補間