float kspline(string basis, float sample_pos, float value1, float key_pos1, ...)
一連の値/位置のペアで定義されたカーブをサンプリングします。 これは、1Dデータランプを指定するのに役立ちます。
vector kspline(string basis, float sample_pos, vector value1, float key_pos1, ...)
vector4 kspline(string basis, float sample_pos, vector4 value1, float key_pos1, ...)
一連のベクトル値/位置のペアで定義されたカーブをサンプリングします。 これは、カラーランプを指定するのに役立ちます。
線形的な間隔のキーが必要なだけな場合や、基底を可変させる必要がある場合は、代わりにsplineを使用します。
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
値をサンプリングするカーブ沿いの位置。
valuen
, key_posn
カーブの形状を定義するために、カーブが通過するキーポイントを指定した値/位置のペアの数を渡します。
キーの位置を昇順で指定しなければなりません。そうしないと、予期しない結果を招きます。
Tip
spline関数は、この関数をより柔軟にしたスーパーセット(上位互換)です。
この関数は、以下の記述と等価です:
type kspline(basis, t, v0, k0, v1, k1, v2, k2...) { float tk = spline("linearsolve", t, k0, k1, k2, ...); return spline(basis, tk, v0, v1, v2, ...); }
See also | |
spline |