ST_MakeNurbsCurve — 制御点からNURBS (非一様有理Bスプライン)曲線を生成します。任意で重みとノットベクトルを与えられます。
geometry ST_MakeNurbsCurve(integer degree, geometry control_points, float8[] weights, float8[] knots);
指定したパラメーターからNURBS (非一様有理Bスプライン)曲線ジオメトリを生成します。NURBS曲線は平滑化される媒介変数曲線で、制御点、重み、ノットベクトルで曲線形状を精密に制御できます。
degreeパラメーターで曲線の多項式次数を指定します (1と10の間でなければなりません)。最高次数で滑らかな曲線が作られます。
control_pointsは制御ポリゴンを定義するLINESTRINGでなければなりません。制御点の数は最低でもdegree + 1個が必要です。
任意パラメーターweights配列は制御点ごとの重みを割り当てるものです。全ての重みは正の数である必要があります。NULLまたは省略された場合には重みは一様に 1.0 が使われるので、非有理のBスプラインになります。
任意パラメーターknots配列はパラメーター空間を定義します。NULLまたは省略された場合には、クランプされた一様のノットベクトルが自動的に生成されます。ノットベクトルを与えた場合には、(npoints + degree + 1)を確実に持たなければならず、かつ降順であってはなりません。
Availability: 3.7.0
この例では次数2のNURBS曲線を一様の重みで生成しています。
SELECT ST_MakeNurbsCurve(2, 'LINESTRING(0 0, 5 10, 10 0)'::geometry);
この例では有理のNURBS曲線を独自の重みを指定して生成しています。
SELECT ST_MakeNurbsCurve(2, 'LINESTRING(0 0, 5 10, 10 0)'::geometry, ARRAY[1.0, 2.0, 1.0]);
この例ではNURBS曲線を独自の重みとノットベクトルとを指定して生成しています。
SELECT ST_MakeNurbsCurve(2, 'LINESTRING(0 0, 5 10, 10 0)'::geometry, ARRAY[1.0, 2.0, 1.0], ARRAY[0,0,0,1,1,1]);