float spline(string basis, float sample_pos, float value1, ...)
vector spline(string basis, float sample_pos, vector value1, ...)
vector4 spline(string basis, float sample_pos, vector4 value1, ...)
このバージョンは、すべてのキーに使用する単一の基底を受け取り、(線形的な間隔の)キー値を可変長引数として受け取ります。
float spline(string basis, float sample_pos, float values[], ...)
vector spline(string basis, float sample_pos, vector values[], ...)
vector4 spline(string basis, float sample_pos, vector4 values[], ...)
このバージョンは、すべてのキーに使用する単一の基底を受け取り、(線形的な間隔の)キー値を配列として受け取ります。
float spline(string bases[], float sample_pos, float values[], ...)
vector spline(string bases[], float sample_pos, vector values[], ...)
vector4 spline(string bases[], float sample_pos, vector4 values[], ...)
このバージョンは、キーの各ペア間で使用する基底が指定された配列を受け取り、(線形的な間隔の)キー値を配列として受け取ります。
float spline(string bases[], float sample_pos, float values[], float positions[], ...)
vector spline(string bases[], float sample_pos, vector values[], float positions[], ...)
vector4 spline(string bases[], float sample_pos, vector4 values[], float positions[], ...)
このバージョンは、キーの各ペア間で使用する基底が指定された配列、キー値の配列、キー位置の配列を受け取ります。
これらの形式は、キー、キー値の配列、キー位置の配列の間の補間基底を指定した文字列の配列を受け取ります。 これらの配列は、キー位置が均等に配置されていなくても(つまり、非均一でキー位置間の距離が同じでない)、 隣接セグメントが同じ基底の時にコントロールポイント(キー)に対して補間カーブを滑らか(接線連続)にします。
basis
, bases
これらの基底は、ランプパラメータでサポートされている補間と同じです。
"constant"
次のキーまで各キー値を維持して、“階段状”のカーブを生成します。
"linear"
キーポイントをポリラインで接続します。
例えば、4個の値を指定した場合:
spline("linear", t, v0, v1, v2, v3)
…この関数は、sample_pos位置におけるオレンジ色のドットの高さを返します。
"cubic"
("catmullrom"
, "cspline"
)
ポイント値をCatmull-Romスプラインで接続します。
最初と最後の値は、2番目(サンプルの範囲の開始位置)と最後の2番目(サンプルの範囲の終了位置)のポイントのカーブの傾斜を決めるためだけに使われるので、サンプル外であることに注意してください。
例えば、6個の値を指定した場合:
spline("catrom", t, v0, v1, v2, v3, v4, v5)
…この関数は、t位置におけるオレンジ色のドットの高さを返します。
(この画像は説明のために使っているだけで、表示したポイントに対して正しいカーブを表示していません。)
"linearsolve"
("solvelinear"
)
非一様なポジションのセットと値のセット間をマッピングします。 kspline関数では、このマッピングを暗黙的に実行します。
tk = spline("linearsolve", t, k0, k1, k2, k3, ...); v = spline(basis, tk, v1, v2, v3, ...);
(技術的には、linearsolve
は、その値をキー値として解釈し、スプラインの交差を計算して、交点を返します。)
"monotonecubic"
コントロール値のオーバーシュートがない3次スプライン。
"bezier"
ベジェスプライン。
"bspline"
B-スプライン基底。
"hermite"
エルミートスプライン。
sample_pos
値をサンプリングするカーブ沿いの位置。
Returns
ポリラインや3次スプラインに沿ったsample_posにおける値。
Note
Bスプライン基底に関しては、この関数は、指定した制御点とノットを明示的に繰り返さなくても、暗黙的にBスプラインカーブの端点の多重度を3と見なします。 つまり、カーブが、端点のコントロールポイントを必ず通過し、補間基底を混在させても(例えば、Bスプライン基本セグメントを線形補間セグメントで繋げた場合) 連続したランプカーブを作成しやすくしています。
See also | |
spline |