Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

cscvn

"自然な" または周期的な内挿3 次スプライン曲線

説明

curve = cscvn(points) は指定された点シーケンス (:j) (j = 1:end) を通るパラメトリックな変分または "自然な" 3 次スプライン曲線 (pp 型) を返します。j 番目の点のパラメーター値 t(j) は、累積したコード長の平方根として、Eugene Lee の[1]向心力スキームに従います。

i<jpoints(:,i+1)points (:,i)2

最初と最後の点が一致する (およびその他の繰り返される点がない) と、関数によって周期的な 3 次スプライン曲線が構成されます。ただし、double の点は角になります。

すべて折りたたむ

この例では、関数 cscvn を使用して、いくつかの異なる内挿 3 次スプライン曲線を作成し、プロットする方法を示します。

このコードは、点のシーケンスを生成し、関数 cscvn から生成された 3 次スプラインをプロットします。選択された点は次のように円でマークされています。

points=[0 1 1 0 -1 -1 0 0; 0 0 1 2 1 0 -1 -2]; 
fnplt(cscvn(points)); hold on, 
plot(points(1,:),points(2,:),'o'), hold off

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

このコードでは、標準的な菱形の 4 つの頂点を通る円形の曲線をプロットします (周期的な境界条件が適用されているため)。

 fnplt(cscvn( [1 0 -1    0 1;0 1 0   -1 0] ))

Figure contains an axes object. The axes object contains an object of type line.

次のコードでは、曲線の端点と double の点にコーナーを表示します。

 fnplt(cscvn( [1 0 -1 -1 0 1;0 1 0 0 -1 0] ))

Figure contains an axes object. The axes object contains an object of type line.

最後に、このコードでは、1 つの double の点をもつ閉じた曲線を生成し、コーナーを作成します。これを愛する人に捧げましょう。

c=fnplt(cscvn([0 .82 .92 0 0 -.92 -.82 0; .66 .9 0 ...
-.83 -.83 0 .9 .66])); fill(c(1,:),c(2,:),'r'), axis equal

Figure contains an axes object. The axes object contains an object of type patch.

入力引数

すべて折りたたむ

パラメトリックで "自然な" 3 次スプラインが内挿する点のシーケンス。スカラー、ベクトル、行列として指定します。

出力引数

すべて折りたたむ

pp 型のスプライン。次のフィールドがある構造体として返されます。

スプラインの形式。pp として返されます。pp は、スプラインが区分的多項式型であることを示します。

スプラインの節点の位置。ベクトル、または多変量データの場合はベクトルの cell 配列として返されます。ベクトルには厳密に増加する要素が含まれます。これらの要素は、多項式区分が定義される各区間の開始と終了を表します。

各区分の多項式の係数。行列、または多変量データの場合は配列として返されます。

スプラインを記述する多項式区分の数。スカラー、または多変量データの場合は各変数の区分数のベクトルとして返されます。

スプラインの各多項式区分を記述する多項式関数の次数。スカラー、または多変量データの場合は各変数の次数を含むベクトルとして返されます。

ターゲット関数の次元。スカラーとして返されます。

アルゴリズム

cscvn はブレーク シーケンス t を次のように決定します。

tk={0,k=1i=1k1(j=1d(pi+1,jpi,j)2)14,k>1

ここで、tkt の位置 k (1 ≤ k ≤ n–1) の要素、p は d 行 n 列の行列 points の転置です。points に重複する点が含まれている場合、cscvn は周期的または変分のいずれかの端点条件をもつ csape を使用して滑らかな区分を作成します。cscvn は、出力引数 curvebreaks フィールドでブレーク シーケンス t を返します。

参照

[1] E. T. Y. Lee. “Choosing nodes in parametric curve interpolation.” Computer-Aided Design 21 (1989), 363–370.

バージョン履歴

R2006b で導入